Providence Utils: Storage

Simple storage interface that can be extended to make use of any type of backing object store. Comes with 2 default implementations, one pure InMemoryMessageStore which uses a local HashMap to store the messages, and the DirectoryMessageStore which stores the messages in individual files in a given directory, and uses an in-process cache to speed up message reading.