A few TODOs  resolved and some cleanup.

Removed the idempotent SQL generation.
Moved SQL Server specific SQL generation out of the base MigrationOperationSqlGenerator
Renamed ModelDiffer DiffSource and DiffTarget to CreateSchema and DropSchema
Added code to handle transitive renames in ModelDiffer
Updated and added tests.
Performed some cleanup (simplified expressions, , removed unnecessary NotNull annotations - as suggested by Resharper)
IDENTITY is not really a SQL constraint (though teorethicaly it could be considered one). 
Another similar example is in the SQL generation for primary key where the code appends NONCLUSTERED. The method could be named GeneratePrimaryKeyConstraints but that would be a bit confusing considering that  from SQL point of view a primary key is a constraint. That is why I c chose Traits.