Adding an expiring cache for view templates

* Added a new IViewCache implementation, currently not default,
that checks if a view location result is stale or not.
* Added an "IsStale" virtual method to ViewLocationResult
which defaults to false.
* Added a new FileSystemViewLocationResult that checks the last
modified time and returns stale/not stale accordingly.
* Few other minor changes to fit in with the changes above.
Fixed bug in the view location cache
Removed pointless reading of modified date
Initial work on reworking view location/caching
Updated uncached view matching logic
Added runtime new view discovery
Ripped out the old view location cache
Test fixups after removal of the old cache
More test fixups
More test fixups
Additional test + fixes
Fixed test setup
Updated StaticConfiguration

Now DisableCaches is obsolete (and will throw an error), added
two new properties to StaticConfiguration.Caching to enable
and disable runtime view discovery and runtime view updating.
Updated View Locator logic

Now if runtime discovery is disabled we bypass the locking
completely - if there's no runtime discovery then our cache
can't change.
Made the new view cache the default
Updated Spark to "work" with the new setup

Spark uses its own caching/filesystem abstraction which
doesn't play nicely with anything else, so currently it just
grabs all the discovered views on startup and uses those. This
means that runtime view discovery is never going to be honored.

Runtime view updates also seem to be broken in Spark currently,
although I'm not 100% sure why as yet.

Test projects still not building at this point.
Attempting to fix Spark caching

Runtime view discovery now seems to work ok.

Runtime view updating still broken though - seems to be a Spark
problem - I can see the updated view being sent to Spark from
NancyViewFolder.UpdateContents, and I can see the lats modified time
getting sent as changed, but Spark completely ignores the new content
and just serves the stale one.
Added comments
Removed "Extension" from ViewEngineStartupContext

All it was doing was passing in the extensions to the view engine.
And it got those extensions from that same view engine object.

Seemed kinda pointless :)
Merge pull request #941 from grumpydev/ViewCacheChanges

Caching Changes