Implement transaction and DataStore API, fix InternalDataStore stuff

#119 #90
Sorry forget to do the changes to InternalDataStore on separate branch ><
...classes with virtual methods need virtual destructors...