Package storage owns the database connection and the store built on it.
It exports its contract, Store and User, and its Module; the connection
and the implementation are private. Keys are types, so a type only this
package can name is a service only this package can resolve.
Module registers the package's services. Constructors are handed over as
they are; the hooks are typed on what they receive. The Store key is
served by the private constructor, whose result is assignable to it.