Make Dialect the typeclass, eliminate HasDialect

Apparently Dialect didn't actually use `driver` (not even via `columnInfo`)
Make Migration#apply take the more general JdbcBackend#Session

Implementors can usually still define apply with SomeDriver.simple.Session
since it erases to the same JdbcBackend#SessionDef
tests: a bit of stylistic improvement
Make Migration hierarchy top-level, rename {->Table}Migrations

Also split things into own files
Make TableMigration Reversible (or Irreversible)

Enable old reversibilitiy tests and add new ones
TableMigrations no longer needs the driver instance

Currently it still needs the driver type in order to select the correct Dialect
Move TableMigration to top level, take an implicit Dialect[_]

 - Eliminates TableMigrations
 - Concrete subclasses are in an Impl object to keep the private[api]
 - No more Dialect companion; it's no longer a typeclass, just an implicit config param
 - Dialect keeps its type parameter because it can be useful in some situations
   (dbs.scala + DbTest.scala demonstrate this)
TableMigration: rename table->tableInfo, tableNode->table
The concrete {R/Irr}eversibleTableMigration classes have to be public
SqlMigration factory should accept a varargs, now that SqlMigration uses a Seq[String]
Scaladocs!!
README.md
Make TableMigration#Self public. Rename file to the singular form
Add test-dbs/database.properties to .gitignore