Implement some transaction and DataStore API

Sorry not TDD, test cases coming soon
#119 #90 
Edit: test not possible as it relies on some components below it. Can just merge first if there is no problem
Compiles, but has not been tested. I think the coupling in my component is too strong, impossible to test one without the other =/
Anyway, what is that std::make_shared thing? Teach me after dinner?