Propogate additional compilation data from RoslynCompilationService

* Update CompilationFailedException to include path of file being compiled
* Pass in path being compiled to Rolsyn.
* Adding doc comments for compilation pieces

Fixes #869
I should have rolled this into a separate change. `RoslynCompilationService` is registered as a singleton, so the cache is already equivalent to static for the application. Having it be static readonly would cause issues running multiple Mvc middlewares in the same application.