Graph Models (FLY-1)

This (massive) pull reuqest adds support for graph-based storage paradigms to Canteen. This includes the following chunks of functionality:
- Support for new base model classes `Vertex` and `Edge`
- Support in `generate_indexes` for generating graph indexes for neighbors and edges
- Support in testsuites for abstract adapter testing
- Support in testsuites for Redis adapter testing
- Support in `InMemoryAdapter` and `RedisAdapter` both for graph storage

There's also a ton of refactoring/cleanup/coverage improvement, too.
Directed version of `GraphAdapter` that supports `in`/`out` for `Edge` types.