WIP: Masked arrays

Before I start implementing all the operations for masked arrays, it'd be great if someone (e.g. @nouiz) could let me know whether this is correct i.e. whether the files are in the correct place, whether I derived from the correct classes, etc. This is my first attempt at a PR to Theano, so I'm not sure how some things should be done.
This isn't good python. It should be self.add(other). As self is already passed as a first argument to add, as the add method is not a static method.

But I would do it like this: move the add method to a function in the file, not in that class, then call it in \__add__().

That way, people can use it like theano.masked.add(v1,v2).