[MRG] Supporting non array subclasses

The support (and test) for y being not an array subclass is implemented, but I still need to work on X.
I don't really understand the relation of the various input checkers any more, so I'm not 100% sure about this one.