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: I4a9b1c3f28eac5c4d360d743efc44286d8a1acca
Signed-off-by: Moiz Raja <moraja@cisco.com>
Merge "Introducing the Modification classses"