opts.solution, opts.submission arguments

Right now submitted code is always run through `spawn()`. This is inflexible and has lead to a proliferation of hacks to add extra parameters to the spawn process like `opts.args`. This patch adds `opts.solution` and `opts.submission` that each take the command array as arguments and return a process object or a stream. With these changes, we can have workshopper levels that have their own custom pipeline, which is important for browserify adventure.