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
This supports both platforms, hence it's ordinal. The paths are going to be the same and even if not the cost is double caching per view of the fileinfo