Introducing the Modification classses

The purpose of these classes is to capture all modifications are done on a transaction.

The reason for capturing these modifications is so that we can persist them to the transaction journal

When a member is restarted or a shard is restarted the "Modifications" will be read from the log and replayed
on the Shard at which point the Shard can create a new transaction and apply it to the current state

Change-Id: Id96a86ed5b39e276074ef0b349f5ca70bbe4ced5
Signed-off-by: Moiz Raja <moraja@cisco.com>