Removed all collections of data inputs from GraphReader|Writer.

Realized that they are not really needed and make the design of the Graph a lot more complicated that it has to be. The Graph will support only atomic CRUD operations working with only one piece of data at a time.
Major refactoring.

- To avoid multiple graph lookups for the same data id, introduced GraphRequestContext which contains both user's input and the existing state of the data requested in the Graph.
- The GraphContextResolver constructs new instances of GraphRequestContext based on the GraphRequestType triggered by the user.
- GraphAuthority now authorizes the request based on GraphRequestContext.
- GraphValidator now validates the request based on GraphRequestContext.
- Added GraphStateManager which is in charge of managing Graph changes: CREATE/UPDATE/DELETE.
- Moved the write(Decision) and read(Decision) from GraphWriter to GraphStateManager.
- Updated GraphDataSnapshotManager to make use of GraphStateManager.
- Updated GraphRequestType to reflect CRUD operations.