Move InternalKey to live with the type classes
Add a typeclass to abstract storage for operational data
Add stubs implementing data storage API

Add two modules containing stub implementations of the new data
storage API for PostgreSQL and in-memory.
Refactor to use storage backend

- Storage backend now a param to handler monad.
- Handlers are wrappers which extract backend from monad and invoke
  typeclass method.
- Most existing implementations moved to typeclass instance.
- Miscellaneous related refactorings to move a few bits (key types)
  between modules, etc.
Fix the (types) of CLI test
Least invasive changes to fix handler tests

They all pass *except* the diff test/s as the diff operations haven't
been implemented in the PG storage implementation. These tests need to
be reworked to use the API when we get the in-memory storage done.
Mark unrefactored test as pending
Fix option handling w.r.t. latest optparse-applicative release
Merge pull request #23 from anchor/wip-abstract-storage

Abstract interface for storage of operational data