HTTP Module changed to add cache headers to all cached resources.

Cache headers are now added to requests that do not have a hash in their
file name. The presence of the hash is useless to the HTTP module as the
ETag information is used instead. File hash is only useful during the
rendering phase so browser can request a new copy of the same resource.
Cache-Control: max-age incorrectly set to 0 for all requests.
ETag generation does not use resource date modified

Due to load balanced servers time possibly being out of sync, date
modified has been excluded as part of the ETag and soley relies on a CRC32
hash instead.
Ignore .min.* and .intellisense.* files.
Added functionality to include resource has in file name

File names are now rendered with a hash value to prevent caching old
resources. Also added unit test.

Also added some comments.
Changed the way rendered locations are located

The RenderedLocation property on the ResourceContentSurrogate class has a
bug where if the rendered location was not locally accessible i.e. a
relative or absolute path that didn't exist could not provide a hash value
and a date modified.

This logic has been moved in to the BaseTagRenderer class. Class has also
been refactored to aid in unit testing.
Added comment to render method.
Added copywright notice to some files.
Moved logic to determine rendered location

Moved logic to determine rendered location in to a static method. This
logic didn't belong in BaseTagRenderer.
Added a cache preparation method

A PrepareCache method was added to IResourceCache to prewrite any cache
related information to the datastore.

This was done so that hash (ETag) information and date modified values
could be based off of the resource in the cache rather than the original
file.

This should aid in scenarios where a developer needs to change a file
being served from the cache.
Added rendered tag selection logic unit test.