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.