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
Don't forget to remove the space `> >` next time