Investigation for "No processor" (See #8266)

These logging changes and fail-fast modifications were useful
in pinpointing the cause of the "No processor" error. Specifically,
they show that the usermode processor used by test_inputs.py was
being called and was communicating with the server *but* that when
the server tried to access the proxy an `ObjectNotFoundException`
was being thrown (caused by poor parsing).
Implement workaround clients.py (Fix #8266)

For each Glacier2.Router session whose category
ends in "\" (but not "\\") we immediately close
the session and create another one.

See:
http://www.zeroc.com/forums/bug-reports/6262-periodic-objectnotexistexception-glacier2-categories-post27018.html#post27018
Implement workaround for client.java (See #8266)
Implement workaround for client.cpp (See #8266)
Use a more thorough test for all languages

Since the primary issue is that stringToIdentity is
corrupting the proxy string, we actively attempt a
full conversion. If the category of the new identity
is empty (null or ""), then we assume that the value
would be corrupted by the server and start again.
Use more robust test in test_inputs.py too
Detach broken sessions before closing

Since we may be in the process of re-joining a session
as opposed to creating one, detach before calling
router.destroySession to be safe. This is in response
to odd logouts in web.
Revert workaround (See #8266)

Though all tests passed, the workaround here broken
OMERO.web's multi-threaded usage.
Modify the isAccept method to not use a string (Fix #8266)

On the stable 5.0 branch, we used a workaround to detect
Glacier2 client categories which would fail due to a bug
in the identityToString Ice methods. Rather than carry
along that workaround when ZeroC will fix the issue, we
make a breaking change here which accepts a Processor*
rather than a stringified version of the proxy.
Maintain backwards compatibility (See #8266)

By using a new method for the improved (i.e. non-breaking)
invocation, older processors can still talk to newer servers.
If a newer processor is deployed against an older server, than
a NoSuchMethodError will be thrown.
Add '--repeat' argument to py.test

Any invocation of py.test can now take a `--repeat=10`
argument which is as if `@pytest.mark.parametrize("x", range(10))`
were added manually.

See:
http://stackoverflow.com/questions/21764473/how-can-i-repeat-each-test-multiple-times-in-a-py-test-run
Merge pull request #2545 from joshmoore/rebased/develop/8266-no-processor

8266 no processor (rebased onto develop)