Configurable storage options for TinkerGraph. #282

Extend tinkergraph serialization to various file types

Add feature to serialize and deserialize tinkergraph to GML, GraphML, and GraphSON formats and metadata to binary file.

Change vertex/edge class and data type encoding to byte

Java serialization tests passing.

GraphML tinkergraph tests passing.

This actually was weird because it had a bit of a false positive in passing.

Added todo for improving tests

Minor refactoring.

GML tests running.

Changed the default GML reader methods to match the defaults set by the GML writer so that they would be in sync for reading and writing to each other in default modes.

Minor refactoring.

Improve graph comparison test

Extend graph comparison test to check edge counts for vertices, in/out vertices for edges, and properties for both.   Make comments in metadata read/write code clearer.

Minor refactoring to make variable naming consistent

Refactor tinkergraph metadata reader and writer code to separate classes

Add tests for tinkergraph metadata reader and writer classes

Introduce TinkerFile interface and factory.

TinkerFile and TinkerFileFactory encapsulate different file storage approaches.

Rename TinkerFile to TinkerStorage

Utilize TinkerStorage for TinkerGraph graph loads and saves

Add tests for TinkerStorageFactory

Add benchmarks for saving and loading TinkerGraph to each file type

Remove unused imports.  Typographical clean-up.

Check if directory exists in load and save methods