Use invoke_drop in map filter

This will make stuff a bit slower because of checking each element we are mapping over instead of just the first one, but it feels saner.

Please review ASAP @boourns @dylanahsmith

We should probably backport this into 2.5 and release 2.5.1.