Actually use --driver option to set database driver for drone.

This includes refactoring database setup, and migration system.

Remove setupDatabase from main and use `Init` method from database
package.

At database package, defines Init method which actually initiate
database with options given from comand line flag. I think `--path`
wont be used anywhere so I plan to remove it later.

Both meddler and migration initiated here, then we call `Set` method
to setup all the tables, etc. Here I think I want to separate database
schema and turn it into migration script instead, later maybe.

At migration package I made some tweak to `Operation` interface.
Realized that it's ludicrous to let migration driver re-implement `Exec`
and `Query`, I made migration script to receive The whole
migrationDriver struct which contains both Operation implementor, and
the Tx itself. This made possible thanks to Go struct being able to
promote its member, now our migration is more transparent.

There's also stub implementation for bot mysql and postgresql, will
implement this really soon.
Returns error if driver name is not listed.

Also remove references to postgresql driver for now.
And add some comments for `database.Init` method.
Refactor migration.

Add `ChangeColumn`, `AddIndex`, `DropIndex` method to
Operation interface.
Implement ChangeColumn, AddIndex, and DropIndex  methods for Operation interface.
Fix index operation tests
Remove unused -path
Cleanup some leftover

Don't have to import mattn/go-sqlite3 at pkg/database/migrate/sqlite.go
Remove unused DriverFunction declaration at migrate.go
Move database schema to migration script.
Remove database.Set, all setup being done in database.Init now.
Refactor tests, add test for ChangeColumn method.
Add usage info at migration script generator.

Also suppress error at the latest migration script
for backward compatibility with existing database, in which
open_invitations column wasn't added via migration.
Add wrapper for common column types for easier column type
transformation between databases.
Preliminary MySQL support. Barely tested.

Requirements:
MySQL/MariaDB need to be configured with this settings:

  innodb_file_format = Barracuda
  innodb_file_per_table = On
  innodb_large_prefix = On

to support key prefix length up to 3042 bytes.

MySQL/MariaDB DSN will need this parameter:

  parseTime=true

as per [1]

The migration system itself mostly inspired by Rails (ActiveRecord),
but it still rough at the edges. Could use some inputs.

Next Todo: more testing!

[1]  https://github.com/go-sql-driver/mysql#parsetime
Add docs to README on how to use mysql
Fix some column type to work with both mysql and sqlite.

Basically this is caused by sqlite actually doesn't have any
column type restriction. also save gob type column as blob to enforce
byte-string value, since varchar with utf8 collation type will take at
least 3 byte to store, this will break YAML-Gob decoding at `params`
column.

Also fix some typo, and clean up fixtures code.
Use variadic parameters for DropColumns.

Also add some comments.
Use NullString instead of checking for error.
Merge pull request #171 from fudanchii/migration

[RFC] database refactorization