Caching

* Added caching feature
* Added a few methods, like `get_node()`, `has_node()`, `has_edge()`, `has_edge_between()`
* Fixed `save_json()`/`load_json()` with IDs other than UUIDs
* Split up tests into multiple files