Restrict usage of QtSignalForwarder::connect() to the main thread

QtSignalForwarder is currently not thread-safe internally, so restrict
usage of the static convenience methods to the main thread.

Clients that need to use QSF on another thread must construct their own
QSF instance and use the bind() method.
Enable method IDs used for signal bindings to be re-used

When a binding is removed, push the method ID onto a free-list
for future re-use, instead of always allocating a new higher method ID.