Resolve #55 - Create caching generic identity parser.

This implementation of IGenericIdentityParser caches the IIdentityParser<T>
instances that it creates and re-uses them for subsequent parsings.

This should give a large performance gain, as creating new identity parser
instances is an expensive operation that relies on a lot of reflection.
Resolve #70 - Refactor local service layer dispatcher exception handling options

The local service layer dispatcher is now configurable with regard to its
exception handling.  There are two flags-based options available (and they may
be combined):

* Wrap caught exceptions within a RequestDispatchException
  When this is enabled, then any exceptions caught from the request handler will
  be wrapped inside a new RequestDispatchException instance (appearing as the
  inner exception).

* Include exceptions within the response where possible
  When this is enabled, then an attempt will be made to construct a Response
  instance (appropriate to the request) and include this exception within the
  constructor parameters.  This requires that the Response type has a
  constructor that accepts a single Exception instance.
  If this constructor is not available then the exception is thrown, as if this
  behaviour were not present.

A default behaviour has been configured for now, which preserves the existing
behaviour of this request dispatcher type (exceptions are included within the
response).  This default behaviour is deprecated/obsolete however and will be
removed in v4.0.0 and up.  Client code should specify the exception handling
strategy desired.
Resolve #60 - Creation of new exception types for common errors