Add PostgreSQL dialect, fix tests
The PostgreSQL dialect isn't usable right now, but this is mostly for testing to make sure everything would work.
The biggest change required here is that PostgreSQL has no equivalent to the MySQL "change column" syntax, and must make each change to columns individually.