Updated ModelDiffer to handle implicit column type changes when columns ...

...are added/removed from keys.

If a column type is not explicitly specified, the SqlServerTypeMapper maps string to varchar(128) or varchar(max) depending on whether the column is used in a key (primary key, unique constraint, foreign key). Adding/removing a property to/from a key caused an implicit column type change that was not detected by the differ.
The fix makes DatabaseBuilder dependent to RelationalTypeMapper, which is used in ModelDiffer to detect potential implicit column type changes in order to generate alter column operations.
When generating code for the column specification, like c.Int(dataType: "X") it is preferable to not include the dataType parameter if it was not explicitly specified. For that reason column.DataType is not set by DatabaseBuilder if a DataType annotation does not exist on the property. Maybe there is a better way to handle this?