Precompile razor views

This is the initial code (beta) to support pre compiling razor views and providing a caching mechanism.
The intent for this implementation is to speed up first start by avoiding jitting of Razor and Roslyn when you don't ship .cs files in the app.

There are several followup issues (mostly RC or later):
1. Add functional tests - blocked on project references not working with meta programming
2. Support cache invalidation scenarios
2.1 Change files - supported
2.2 Delete files - supported
2.3 Delete/Change viewstart - not supported
2.4. File watcher support
2.5. Integrate with in memory cache - requires view start feature, and changes to memory cache.
3. Support not deloying razor files
4. CRC instead of MD5 hash (needs OSS approval), or alternatively Sha1 - Requires Razor changes
5. Diagnostics
5.1 for C# errors - supported
5.2 for Razor parsing errors - not supported (but VS will show up when you open the file).
6. Changes to Razor for exposing class name, namespace and hash from generator results.

this is not a hot path, so I'm not concerned with perf at all. The intent is clearer this way. 

When it is written with TryAdd (like I did on the first iteration of the code) it reads sloppy, like you forgot to check the TryAdd. But sure I can just add a comment to clarify it.