Added a SqlServerMigrationOperationPreProcessor class ...

...that is used to pre-process the migration operations (alter column and drop column) before generating SQL. A drop column is pre-processed into a DropDefaultConstraintOperation if a default exists followed by the DropColumnOperation. Alter columns are preceded/succeeded by corresponding Drop/Add default constraint, primary key, foreign key, index. The preceding/succeeding operations are inserted before/after groups of alter column operations. Alter timestamp column is pre-processed into drop/add column.          

Changed IMigrationOperationVisitor from interface to abstract class to be able to provide a default implementation.

Argument null checking throughout this class.