Warn when table has data and no primary key or unique index.

Modified both the FileScripter and DataUpgradeScripter so the warning occurs when generating create scripts and when generating data upgrade scripts.
Don't include computed or timestamp columns in BCP data files.

 * Changed the methods that modify the BCP format files to take a list of columns to include and then remove any columns not in the list. Also refactored the methods for better code reuse.
 * Note that I did not change anything for native (binary) BCP data files (they still include all columns).
Added locking around console operations.

 * The primary reason for locking is to avoid having a parallel task continue to write to the console while a separate task has prompted the user and is waiting for a response. The user may not see the prompt due to the subsequent output.
 * Also made it simpler to output to the console in different colors.
 * Also prompt to retry when there is a failure deleting one of the Actual or Expected directories.
Include single quotes around file names in console output.
Added -SingeFile option.

Using the -SingleFile command line argument (the UpgradeScripter.SingleFileName property) the invidual upgrade files are combined into a single upgrade script.