Refactor client decorators into their own package.

Trying to cut down of complexity and length of client.py.
More refactoring to simplify lwr.lwr_client.client and lwr.lwr_client.manager.
Long overdue, eliminate wait method from JobClient.

Was used by first implementation of LwrJobRunner but not since and only stuck around because of its use in the test infrastructure. Just write own wait for testing stuff.
Eliminate another unneeded method in JobClient.
More client.py clean up.

Fixes for recent get_status() and wait() modifications. Move self._copy into util.copy() - a better place since the operation has nothing to do clients - it is a file operation.
Rearrange JobClient methods so highest-level, most important method toward top.
Create high-level fetch_output method in JobClient...

That dispatches to now protected methods _fetch_output, _fetch_work_dir_output, and _fetch_output_legacy. This slighly complicates JobClient but simplifies its public interface - there is now one method for fetching output. Also simplfies lwr_client.staging.down (which was doing this same dispatch anyway - only external to JobClient).
Simplify JobClient by moving __ensure_directory into util.