I have made a slight change to my base specification class by adding an AndNot(x) method as I quite frequently am finding the need for it and it is so much more readable than And(x).Not().
This is simply an addition of the signature on the interface:
public interface ISpecification
bool IsSatisfiedBy(T candidate);
and the implemented code is just:
return new AndSpecification
I don't see a need to remove the Not() as it is still useful in defining reusable not specs.