Make repeated rpdb.set_trace() on the same port while within rpdb.set_trace() a no-op

This reliably ignores recursive rpdb.set_trace() to the same port as a currently operating one.

* It ignores failure to bind to a port if the port is currently occupied by rpdb,
* ... but raises an exception if it's occupied but not by rpdb.
* It uses locking for thread safety

Without this change, hitting and rpdb.set_trace() while already rpdb-debugging to the same port would clobber the run with an exception. Now you can rpdb.set_trace() scattered throughout your code, or hit it multiple times around a loop, without a problem.