Merge branch 'release/2.5.0'
Resolve #37 - Implement 'AreContentsSameAs' extension method for IEnumerable<T>

This method checks that two collections contain the same items, ignoring order.
Resolve all of #33 #34 and #35 - Changes to public API of identity and entities

This commit primarily obsoletes some old (bad) parts of the API and also adds
some new functionality that will be of some use.

* Obsolete many old methods.

* Tidy up API.

* Add imlementations for various IEquatable<T> interfaces.
Resolve #38 - Create an in-memory implementation of IDataReader.

This enables creation of a data reader backed by one or more in-memory 2D string
arrays, but behaves in much the same way as a normal IDataReader instance.

* Tests with reasonable coverage created for this type.
Resolve #39 - Fix backwards-compatibility for static Identity methods.

These methods are now backwards-compatible again with obsolete versions
decorated as such.  New tests are in place to ensure that they work.
Resolve #36 - Improving the API of Service Layer dispatchers: more DI-friendly

Registering service layer handlers is now possible using a factory method to
create (or resolve, from a DI framework) the request handlers.  This removes
the requirement for the request handlers to have parameterless constructors and
also means that their own dependencies may be resolved within the factory
method's logic.
Resolve unreported issue - contained projects no longer use solution version

This only causes a problem when the projects are included in other solutions,
for example as submodules.  The contained projects were picking up version
numbers from the contained solution.  This is no longer the case.
Bump version numbers
Merge branch 'release/2.6.0' into production