Removed duplicate code in Mask
Don't use private abstract methods
Revert "Don't use private abstract methods"

This reverts commit 97bea15d0c1d3ce2fa40ac774a36bddba8ba9424.
Don't use private abstract methods - try 2
Don't use private abstract methods - try 3

I know that private abstract methods work as long as you don't inherit
outside of the library, but i don't like them :)
Minor renaming
Moved deprecated CompositeOperation