This addresses GitHub issue #824 and includes additional cleanup.

The base Migration class does not implement IMigrationMetadata anymore.
Added MigrationExtensions helper class to avoid casting everytime metadata information is needed from a migration.
Removed UpgradeOperations and DowngradeOperations properties from IMigrationMetadata.
Renamed MigrationMetadata to MigrationInfo and added constructor to create an instance from a Migration instance.
Updated MigrationAssembly to return Migration objects instead of IMigrationMetadata
Upated HistoryRepository to return HistoryRow objects instead of IMigrationMetadata.
Updated Migrator.GetDatabaseMigrations to return Migration objects.
Updated code and unit tests as necessary.    
These extensions would not be needed if the Migration class implemented an IMigration interface that specifies the "metadata" and the operations together since there is no scenario where they are needed separately.