+per #3641 Storage plugin API

- Journal plugin API for storage backends with asynchronous client API (default impl: in-memory journal)
- Journal plugin API for storage backends with synchronous client API (default impl: LevelDB journal)
- Snapshot store plugin API (default impl: local filesystem snapshot store)
Merge pull request #1751 from eligosource/wip-3641-storage-plugin-apis-krasserm

+per #3641 Storage plugin API
Merge remote-tracking branch: upstream/master