Merge branch 'release/2.6.0'
Resolve #40 - Service layer request dispatchers can now manage handler lifetime

This means that service layer request handlers do not need to all be constructed
in advance (whether they are being used or not).  When using a DI framework this
forced the request dispatcher to have a lifetime scope of "per unit of work",
since it would depend upon transient request handlers.  The issue this caused is
that every time the dispatcher was re-created, all of the handlers needed to be
re-registered.  Now a dispatcher may have a static/application scope, and
registered handlers may be created, used and disposed as required.

* Marked a number of methods obsolete, which should be removed in v3.x.

* Added new unit test for new functionality.

* Added functionality to the local request dispatcher to track both a collection
  of instantiated handlers as well as factory methods that create handlers.

* Corrected unit tests to take new functionality into account.
Add service layer model types

These new types describe a service layer interaction, as well as providing a
container for a 'common' model component.  They may be used to reduce the
boilerplate that needs to be written for (for example) view model types that
represent service layer interactions.
Revert "Add service layer model types"

This reverts commit 7f84d2306f5f2bb461beb478283d3338b9b8203b.
Resolve #44 - Add service layer model types

These new types describe a service layer interaction, as well as providing a
container for a 'common' model component.  They may be used to reduce the
boilerplate that needs to be written for (for example) view model types that
represent service layer interactions.
Resolve #42 - Implement extension method "ToSet" for generic ICollections

This adds a small side-project, providing this functionality, with a reference
to Iesi.Collections.dll.
Refactor Entity type, move 'reference list' functionality away & add tests

This prepares us to tackle #41, the functionality to handle references within
collection types is really too large to include within the base Entity type.
Because of this, it has now been moved away to a new static type named
ReferenceList.

* Mark all reference-collection functionality on Entity as Obsolete.

* Add unit tests for event-bound list wrappers.
WIP #41 - Refactor object hierarchy for event bound collections

Issue #41 is all about wrapping generic ISet instances with the event-bound
wrapper system.  Because of this it makes sense to create a new base type for
event-bound collections that requires only the implementation of ICollection<T>
instead of IList<T>.  This base type can then provide functionality for both
lists, sets and any other collections we decide to add later.

* Move functionality to new base type.

* Mark IEventBoundList as obsolete - it brings no value to the API.

* Create new EventBoundCollectionWrapper type that handles ICollection
  instances.
Resolve #41 - Add reference set functionality

This adds the new EventBoundSetWrapper, a subclass of the abstract base
EventBoundCollectionWrapper type.  This handles all required functionality for
dealing with wrapped ISet instances.

* Add unit tests for new functionality.

* Add new ReferenceSet helper type to quickly wrap collections.

* Add new extension methods for sets.
Merge branch 'feature/41-event-bound-set'
Fix unreported issue - backwards compatibility broken by renamed method

This adds an obsolete version of that same method, with the old name.
Resolve #47 - Refactor and improve the implementation of the Service Layer

This is a non-backwards-compatible change.  In the end, the original description
of #47 has not been accomplished, since it was decided that it was the wrong
thing to do.  Instead several improvements have been made though.

* Remove some unneeded/obsolete types, doing away with:
* * The IResponse interface
* * The IRequestHandler`2 interface

* Remove numerous obsolete methods from IRequestDispatcher interface and
  implementing types.

* Remove concept of pre-built handler types within the LocalRequestDispatcher,
  replacing it with handler factories, so that all request handlers may be
  constructed and disposed of to-order.  This makes the architecture far more
  Dependency Injection-friendly.

* Improve robustness of LocalRequestDispatcher handler methods, throwing more
  appropriate exceptions where needed.

* Rename RequestHandlerBase to simply RequestHandler, also split this into two
  types - one that can handle requests with responses and another that handles
  requests which never return a response.

* Large refactoring of RequestDispatcherBase - mainly concentrated on the
  registration of and searching for request handler types.

* Mark RequestExtensions as obsolete.

* Mark the Response type as abstract and refactor.

* Add stub assembly containing requests, responses and handlers (to test
  assembly-scanning).

* Update many unit tests to work with new API.
Resolve #46 - Mark the CSF and CSF.Collections libraries as CLS compliant

Also make a few trivial corrections (fixing unsafe type usage).
Resolve #48 - Create and test new IdentityParser type

The identity parser is a parser for the identities of a specific entity type,
and it may be constructed using a static factory method.  This method scans the
inheritance hierarchy of the target entity in order to create an appropriate
instance.

* Rewrite old/obsolete functionality to use the new IdentityParser.

* Provide convenience methods for quick parsing.

* Update unit tests.

* Create new unit tests for new functionality.
Trivial change to a comment, relating to the creation of issue #63
Resolve #50 - Upgrade target framework version to v4.0

* This requires explicitly setting the references to Iesi.Collections, as there
  is also an ISet<T> in System.Collections.Generic.

* The enumeration extension method HasFlag had to be removed, as it collides
  with identical functionality now present in the .NET framework.
Resolve #43 - Create NameReformatter type to reformat names.

The first implementation transforms PascalCase to lowercase_underscore_separated
but more implementations may be created as needed.
Resolve #49 - Create GUID generator that uses a COMB algorithm.

This provides a number of diffrent sub-strategies for generating GUIDs using a
COMB algorithm, incorporating the current timestamp (or part of it) into the
generated result.

The COMB algorithm results in sequential GUIDs, which fragment far less quickly
and are thus more suitable for use in database indices.
Resolve #30 - Remove the Service Locator from the project

The Service Locator is really a bit of an anti-pattern and rather than splitting
it up, it is actually better to just remove it altogether.  In the future, use
a proper DI container instead.
Bump version numbers