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.
`DirectedGraphAdapter` support for `RedisAdapter`, mock testing powered by `fakeredis` (forked @ https://github.com/sgammon/fakeredis)