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
hmm surprised cpplint didn't pick that up