Separate latest data from historic.

So far, latest data was tightly coupled with historic,

This is a major change where latest (active) data is separated from historic.
This loosely coupled data structure creates two graphs:

Active Graph - contains the latest data without any historic data. (see: ActiveVersionedGraph class)
Historic Graph - contains the historic data, (see: HistoricVersionedGraph class)

This approach has several advantages such as:

- It keeps the latest active data clean, which results an exact graph as
  historic capabilities weren't enabled at all.
- It makes the active graph very easy to traverse, just like any other graph
  with non historic data.
- Decoupling the graphs makes it easy to deleted or rotate historic data to
  other databases as historic data grows in time.

Extra changes:
- Unit tests were fully rewritten.
- Hamcrest matchers for easy testing graph elements.
- Bumped version to 0.4-SNAPSHOT
- Tinkepop 2.4.0-SNAPSHOT is required.

Fixes #8.