Add SQLite and in-memory key storage drivers

#### Summary of Changes:
* Examples include a SQLite storage driver and a small program demonstrating the user-facing storage API.
 * Updated gradle build files to compile/test example sub-projects.
* Implemented a K2-native in-memory driver.
 * Stores keys in proto message form for the duration of a K2Context.
* Refactored unit tests for storage drivers.
 * Moved all shared testing logic to two super-classes: one for basic testing and another for testing file-based drivers.

Is there only one mem key available at at a time or does using the same URI guarantee you will get the same key back