Rework

* Migrations don't fail fast when an error is returned, but instead just print `FAIL` and leave as pending. This lets you continue on to the migrations that follow.
* You can give `Up`, `Down`, and `Redo` a number of migrations to run. This is nice if you're trying to migrate 5 migrations down, you no longer have to type and watch `goose down` execute 5 times. Instead, you run `migrationExecutor.Down(5)`. See Readme.md of this branch for example usage.
* Migrating up does not look at the current version and migrate any migration with version greater than the current version any more. Instead, migrating up looks at all the `PENDING` migrations as the list of migrations to run, and tries to migration all or N of them. This is helpful for when git branches merge out of order, so you can always be sure that all migrations will run.
* Migrations are compiled with your app, so there is no need for the `go` binary on your server anymore. See Readme.md in this branch for details on how you might run migrations with this new version of goose.
* On app init, each migration calls `RegisterMigration`, giving `goose` access to each of the migration's functions (up and down), its version, and its name. This way goose does not need to know about the file structure/hierarchy of your app.