Cache file info access in viewengine

Move compilation and VirtualPathViewFactory to be singletons
And cache access to files.

The cache time is controlled by MVC options.

The cache is implemented in the ExpiringFileInfoCache.cs

Total improvement of about 10% in RPS
True, but you don't expect the filename sources to vary the representation randomly.