Fixes an issue with sorting migrations

When sorting migrations, migrations following an incrementing value
numbering scheme will run into issues when there are more than 9
migrations. Using an alphanumeric sorting scheme leads to situations
where the migration labeled "10_alter_table.sql" will not be run because
it is assumed to have run before the migration "1_create_table.sql".

This patch implements a more robust sorting algorithm to ensure that if
the migration files use a prefix that is numeric, it will sort in the
expected way.
Fixes issue where ToApply was not applying valid migrations

ToApply was applying a comparison operator that relied upon string
alphanumeric ordering. This means that a migration named
"10_alter_table.sql" would be seen as a lesser versioned migration than
one labeled "2_create_table.sql".

This patch removes the comparison in favor of an exact Id match.
Correctly identifies most recent migration

PlanMigration incorrectly identifies the most recent migration. The
query uses alphabetic sorting to order the id's. This results in migration
2_Create_Table.sql being returned instead of 10_Alter_Table.sql as the
most recent migration.

Fixes the issue by querying for all migrations and using the Sort
method on byId to correctly sort Id's. This correctly returns
10_Alter_Table.sql as the most recent migration.