Support inverting (excluding) specifications.

Specifications can now be inverted (or excluded) using

    Specification.Invert<S>()

or within fluent specification chain with

    Specification.Use<S1>().Except<S2>()

Apart from that, an abstract Specification<T> is included to help
implementing typed specifications.