Use absolute path when requiring the migration file and catch nil file_name in writer

The gem assumes that all migration files are directly within the db/migrate directory, so it is unable to load migration files within subdirectories. Modifying the initialize method in Migration class fixed that.

If the schema migrations table doesn't exist, errors occur because the redefine_execute_methods method only catches `SELECT "schema_migrations"."version"`, so Writer.file_name wasn't set. Writing to the migration_sql file only when the file_name isn't nil fixed that.