Support All and Any operators.

This patch introduces new operators All and Any. The first works
like And but can handle many nested specifications. The Any operator
works like Or but also can handle many nested specification. The
reason of introducing such operators is to use the specification not
only in fluent API but also by classes which build the specification
by composing nested specifications.
Great change.