The fix is actually very easy: Instead of piping stuff into a reader, then feed it to *out*/*err* via a writer, we directly hook them to System.out and System.err. The problem is that it kills many tests that rely on `with-out-str`, so we have to include `with-system-err/out-str` macros to catch sysout/syserr data, and replace usage where tests fail.
It's likely that the alias vector provides additional arguments that change the semantics of the invocation, so blindly propagating the docstring would be misleading.
…heck for correct permissions
This commit adds an extra condition at the beginning of the `setup-map-defaults` function, such that if one of the two items being merged has a higher priority than the other, it is honored. This seems to fix the issue where the `^:replace` metadata was not working properly