allowing preEmit to change arguments

This PR implements the previously discussed functionality that if `preEmit` returns an array, that should be used as arguments instead when passed on to `shouldEmit` and (potentially) `trigger`.

I considered allowing returning non-undefined non-array values too and just wrapping them in an array, but then things get somewhat unintuitive if what you actually want is a single parameter that is an array.

Always returning an array might be clunky when you only want one parameter, but it means less space for misunderstanding.
weird whitespace issue here. Please use editorconfig plugin in the future for your IDE or text editor to avoid this, as we have a .editorconfig file for these kinds of issues.