Rework logic in tools related to false paths.

Basically, if a false path is set trust it, don't explicitly check app.config.outputs_to_working_directory. The hope here is that this logic can then be used in other scenarios where a false_path might be setup at the layers (e.g. job_runner) above tool.
Eliminate output path rewriting in TaskWrapper.

Rework task splitting to rewrite paths before cheetah evalulation not after.

Utilizing DatasetPath.false_path mechanisms implemented for config.outputs_to_working_directory. I think this could be made less convoluted if the combination of outputs_to_working_directory and Task splitting were optimized in some way - but this changeset keeps the behavior of that the same (copying twice) just to isolate changes to how these paths are evaluated in Cheetah.
Reorganize tool dataset wrapper instantiation for future extension.

This changeset should change how anything functions, but will make subsequent changes less dramatic.
Refactor DatasetPath out into jobs.datasets.
Eliminate input (hence all) path rewriting in TaskWrapper.

Extend concept of false paths to apply to inputs as well, use the rewrites implemented in TaskPathRewriter.