This is me trying out clojure's multimethods for a problem I'm trying to solve. See this Stack Overflow question for follow up.
Note that implementation namespaces are named utils-linux and utils-windows instead of utils.linux and utils.windows because Gists can't have subdirectories.