Convert PerforceClient.run_worker to be a context manager.

Review Request #8943 — Created May 16, 2017 and submitted — Latest diff uploaded

Information

Review Board
release-2.5.x
0a827f2...

Reviewers

run_worker(), which establishes a Perforce session, used to take a
function as a parameter to run, which meant that callers had to define
an extra function or provide a lambda. Now it works as a context
manager, reducing the work needed by the callers.

As part of this, run_worker() now handles converting exceptions by
itself, without needing the old _convert_p4exception_to_scmexception()
utility method, simplifying code a bit more.

This also fleshes out the documentation for the affected functions.

Unit tests passed.

Tested Perforce functionality manually. Everything works as it did
before.