Proposed Datastore API

#90 #119 
This is the DataStore API to be exposed to Query Engine.
DataStore is a singleton that pushes Operations to the deque<Operation> that will later be committed by Transaction.
Transaction ensures that there is only one instance of DataStore that is accessing/modifying the xml tree at any point of time.
Operation classes coming in the next PR
Ummm yeah sort of, so because you said (or maybe it was @evansb ?) the usage should be like:
`Transaction t(DataStore::begin())`
so I am not sure what to do here. Does begin() supposed to be the instance getter of DataStore? Or is it the boolean to ensure mutex? (currently I am taking it as the mutex as per Evan's suggestion)