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.
To don't create too much object, when we have op that don't have parameter, we instantiate one after the class 
```
class MakeMask(Op):
 ...

make_mask = MakeMask()
```

Then you use the instance as a function make_mask(var). This make the user code more clear and speed things up. Idem for make_mask.