separate Runner from Context

This is again mostly code moves, and it's definitely not perfect yet, but it's worth a review; might manage a fix-it-then-ship-it. Notable features:

  * funcs about constructing the command moved to args.go
  * funcs about constructing the environment moved to env.go
  * funcs about actually executing commands in a context moved to runner.go
  * most tests about the environment no longer invoke external commands
  * many tests are just as stupid as they were to begin with, it's late and this CL is big enough already

one thing I've just realised is definitely missing is an explicit Runner-level test for actually running a jujuc server. Still worth a review for overall sanity please :).