Requiring the definition of empty methods is annoying.

Use method_exists() to make optional methods optional.
Implement basic indexes for postgres.

Only some indexes can be defined during table creation. Other
indexes need to be defined after table creation. This also
includes table comments, which will need to be handled separately.
Separate index + constraint.

Conflating the two makes generating the correct SQL harder as some
databases have very different ways of including constraints and indexes.
Update MySQL schema to match how things will need to work.

createTableSql will now need to get additional parameters to account for
how postgres and sqlite need to create indexes + constraints
differently.
Remove duplicated code.
Add name() to Table class.

This allows index creation in sqlite and is a nice accessor to have.
Fix/add index generation to Sqlite.

Previously Sqlite could not create standard indexes for optimizing
queries. Now it can create basic unsorted indexs like other databases.
Make constraint generation simpler to read.
Add index/constraint support to PostgresSchema.
Pass the table instance into createTableSql

This will allow postgres to preserve comments. Comments in postgres need
to be separate commands.
Add column comment support to postgres.
Fix failing test.