Macro Clean Up

Slight cleanup of the fern.dsl module, implementing a generic parse-args
function for pulling out DSL kwargs and updating run/with-hosts to use
it. run, now, fortunately/unfortunately no longer supports multiple
commands as a simplification. run/with-hosts now, also, use defmacro/g!
to clean up the gensyms.
Local Execution

Teach the run macro and fern.execution.execute how to execute commands
locally when no remote connection is provided.

Sneak in addition of --str-- method to the Result object that just reads
all the stdout and returns it.