DataStore Internal tests

Sorry for the big PR. After modifying the tests I found that there are so many mistakes in the current design and I need to fix them. Summary:
- Tests for internals only (for API coming soon)
- Tests are isolated and cleaned up before and/or after if necessary (thanks to @evansb for finding this bug and helped me to fix it)
- Change in design: now all operations have to go through Transaction, for consistency of DataStore behaviour (without going through Transaction, commit is not invoked and file will not be saved)
- Rollback is now useful for cleaning up (done in #199 )