Preprocessor loading in external assembly

Reflection which determines the existance of preprocessors should correctly
load types which do not implement the generic IPreprocessor<T> type.
WIP: Reload cache if external file changes.
Remove duplicate resource load unit test

Resources can be registered twice. Unit test no longer required.
ResourceBase ToString() method updated for new ToString()

ToString() simply dumps the contents of its internal location table.
ToString() updated to reflect that.
Added Location to ToString() verification test.
Partially working
Cached resources to be reloaded if a dependency changes

Various changes required to reload resource bundles if a dependency in
that bundle changes. This is a work in progress.
Change AddDirectory() to return a IBinder allowing the use of ToIdentifier()
Rename DirectoryWatcher to FileWatcher
Change TimedExecution to be milliseconds rather than seconds.
ResourceLocation GetHashCode() generates hash from supplied argument.
Refresh cache when an external resource is modified.

Registered groups of resources are to be re-processed should a resource
contained in that group by modified externally.
Create FileInfo in constructor for ResourceLocation.
Change access modifier to public for Preprocessor development.
ETag generation done per request

ETag generated upon request as resources may change at any point in the
pipeline.
Add null check when attempting local resource retrieval.
Timer execution to be delayed when starting up.
Removed Content-Encoding from response headers

HTTP header response for Content-Encoding is incorrectly set to utf-8.
Should be either gzip, deflate or identity.

Content encoding to be added at a later date.
Fix timer execution tests.
ETag information is not written to the response if it is not present.

ETag generation done by an internal preprocessor, not visible via
configuration.

Forgot hash generator