Merge branch 'release/3.1.0'
Resolve #69 - Create CancelOrProceed enumeration.
Resolve #67 - Mark obsolete functionality of Entity as such

The state-change events (marking an entity as dirty, deleted or created) have
never found any actual use.  As they stand, these events just clutter the API
without providing any meaningful benefit.  Unless an actual use-case can be
found for them, they should be removed.
Resolve #59 - Create Capitalize extension method for strings.
Resolve #54 - Improve the API for identity parsers.

The static parsing methods available on the IdentityParser type are now marked
obsolete.  These are replaced with a new service type: IGenericIdentityParser.

The generic parser may be implemented as any parser which can parse for multiple
types of entity.  The static IdentityParser type now contains a reference to the
AdHocGenericIdentityParser for backwards-compatibility.  This may be removed in
v4.0.0 and up.
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
Bump version numbers
Merge branch 'release/3.2.0' into production