Should we restrict options.mask to an instance of Image? We could easily handle more cases by accepting a string (image will be loaded within the filter), or elements that support toDataURL.