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
Is `DateTimeOffset` more preferable to `DateTime` these days?