Restructure the data store.

 - Facades: Transaction and Data Store
 - Internal: Transaction is a stack of operations, DataStore is a stack of transactions.
 - When client code commits or rolls back transaction, facade forwards to real transaction, which tells the internal data store to apply the operations
 - Move the logic for each action into the operation so that we fully utilise polymorphism

All tests pass. But I'm quite certain the tests are insufficient...

You'll also need to add virtual dtors to the following classes:
 - You::DataStore::Internal::IOperation
 - You::DataStore::Internal::PostOperation
 - You::DataStore::Internal::PutOperation
 - You::DataStore::Internal::EraseOperation
Oh ya.. But that was because of the previous design that is flawed haha. So should this be possible? (operation takes place without transaction).
Oh and actually, that test was created to check if I am using pugixml correctly, so those test should be done on Operation classes now and not Internal::DataStore, if it is to follow the initial intention of making the tests.