fix: `compose`ing variadic functions never returned anything

The first patch fixes a problem with `compose`. If you compose two functions, where the first had variadic arguments (or 3 or more arguments), the resulting function never returned anything.  This was breaking `tee`.

The second patch is just a clean up.