BUG: MaskedArray ignores __array_priority__

fixes: #5227 

This patch partially fixes the issue (I only covered addition, subtraction and multiplication).  If you agree that this is the right approach - I will add remaining operations.
For that matter, why not just use `assert_(isinstance(obj, cls))` ?