Incremental work towards preprocessing CSharpCompilations

This contains the idea of a compilable aspect which is distinct from the main assembly.

The next step is project.json dependency types, but I wanted to get the ILibraryKey change into the dev
branch in a working form to avoid longer complex rebases.
Used named parameters for null.