Implements multi argument function composition
Fixes reverse() bug (it's mutable!)