Adding multiple implementations of Data types plus permissions.

- Added ReadOnlyData implementation.
- Added ReadWriteData implementation.
- Added ExpiringData interface for data that expires.
- Added ReadOnlyExpiringData implementation of ExpiringData.
- Added ReadWriteExpiringData implementation of ExpiringData.
- Added ReadOnlyProtectedData implementation.
- Added ReadWriteProtectedData implementation.
- Added DataPermission interface to capture data permissions: read/write/update/delete.
- Hooked up DataPermission with all existing Data types.
- Added unit tests for all above.
GraphAuthority will enforce Data permissions.

When you insert/update/delete data in the graph the GraphAuthority will authorize the request before it goes through. It relies entirely on data permissions.