Migrations, more tests, dialect refactoring

* Added migrations
* Some more tests to increase coverage
* Refactored Dialects from a simple struct to an interface