Rebase JobRunner's in_directory out into galaxy.util for reuse.
Add rewrite_parameters to LWR runner.

Causes rewrite of inputs/outputs to occur during tool command/config evaluation instaed of rewriting paths after. Work in progress - this is very hacky.
Break Cheetah wrappers out of tools.py to prevent circular dependencies.

Also is more work toward reduces tools/__init__.py to a more managable size.
Rework interface between jobs and tools.

Pull code out of job wrapper and tool for building and evaluating against template environments and move them into a new ToolEvaluator class (in galaxy/tools/evalution.py). Introduce an abstraction (ComputeEnvironment) for various paths that get evaluated that may be different on a remote server (inputs, outputs, working directory, tools and config directory) and evaluate the template against an instance of this class. Created a default instance of this class (SharedComputeEnvironment) - the idea will be that the LWR should be able to an LwrComputeEnvironment or something like it and send this to the JobWrapper when building up job inputs.

Add a unit test to walk through this evaluation process. Verify parameters are evaluated, paths are correct, and exec_before_job hook called.