Fix compiler error present in previous commit

This was an embarrassing oversight.  It's now fixed and the project compiles
once again.
Resolve #68 - Operator equality avoids using object functionality

This means that in scenarios where the object is proxied (for example, in an
NHibernate environment, using DynamicProxy), testing equality using operators
does not force the hydration of the object (with a database query) when it
doesn't need to.

The following comparisons are now handled without touching functionality of the
objects except (at the most) the 'Id' property:

* Comparison with self (reference equality)

* Comparison of a non-null with null

* Comparison where 'Id' properties are identical

* Comparison with an object that has been cast down to IEntity

In a fall-back scenario, the full 'Equals()' method is still consulted but in
most scenarios this is no longer needed.
Resolve #65 - 'WithFlags' and 'WithoutFlags' extension methods for enumerations

These two extension methods (strictly-speaking they are extensions for all
structs) enable the addition/removal of values to/from a FlagsAttribute-based
enumeration value.

If these methods are misused (with a non-enumeration struct, or a non-flags
enumeration) then an exception is raised.
Trivial refactoring of EnumExtensions.IsDefinedValue()

This simply removes an unneeded internal method and inlines a variable.