A vault is a persistent store for values of arbitrary types.
It is like having first-class access to the storage space behind IORefs.
The data structure is analogous to a bank vault, where you can access
different bank boxes with different keys; hence the name.
Also provided is a locker type, representing a store for a single element.