Move and rename functions for reading and writing files
Implement with-store macro

- Most functions that take a store are now multi-arity
- In most cases, a *store* can be used because we expect it to be bound
  with `with-store`
- Smoke-tested most of the functions, including the reworking of
  `unread-messages` and `mark-all-read`. However, there may be lingering
  bugs from this.
Fix test
Refactor shared logic in folders functions
Refactor all-messages to use new open-folder function
WIP: Start updating README.
Merge branch 'refactor-to-use-with-macro'