The Storage trait is implemented on a type which can cache all of the computations
used in the program (or a subset of it). These types are typically composed of
several fields with each field implementing StorageFor<T> where T is one
computation type. Note that each computation type must be unique within a Storage type.
This trait is implemented by a type storing a single computation type C.
Examples include HashMapStorage<C>, SingletonStorage<C>, and BTreeMapStorage<C>.