A vault is a persistent store for values of arbitrary types. It's 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.