Complement type, possible approach to #1032.

Paired on this with @punkrockpolly, see:

https://github.com/punkrockpolly/Playing-with-Julia/blob/master/negatedindex.jl

The premise of the Complement type is that it abstracts the
complement of a collection – primarily  that

	`x in c` <=> `!(x in c.collection)`

This commit punts on indexing for more than two dimensions because
that turns out to be an incredibly invasive change to huge amounts
the multidimensional array indexing code.