avoid try/catch deoptimizations
avoid leaking arguments
add crazy tests for custom map/reduce functions, fix reduce when descending=true