Add MSBuild Task for code gen.

It doesn't work yet because Roslyn tries to nest a build.
We need to instead have the Task take as inputs all the same ones that the Csc Task takes so we can initialize the project in the same way, without nesting a build.
Merge branch 'master' into Roslyn_BuildTimeCodeGen
Revise Task to take parameters from Project under build.
Build time code generation works!
Stop generating intermediate source files that are empty.
Truncate generated files that shrink in subsequent builds.
Add Generator to source file so file is regenerated each time.
Skip scanning compile items that are missing the Generator
Reduced visibility of *ChangedProperties to match described type.
Convert a couple tests to runtime tests.
Generate code with consistent line endings.
Make line ending test verification more resilient.
Migrate almost all verifications from T4 EmptyTests.cs test file to codegen NoFields.Tests.cs file.
Add With* property mutating methods.
Rename Empty codegen tests class to resemble the T4 tests.
Migrate AbstractClassFamilies tests to codegen.
Add build time code generation option.