Add function for fast modular exponentiation.

The function uses GMPY's bignum arithmetic which speeds up the calculation.
Use 'powMod()' instead of the built-in 'pow()'.

'powMod()' is faster than 'pow()' and will both make UniformDH computationally
less expensive and create less of a timing signature.
Add some trivialities related to the #10031 patch.
Call transport setup at obfsproxy start

Pluggable Transports can use the setup class method
to receive Pluggable Transport config and save data to class attributes.
Obfs2 uses setup classmethod to save shared secret
Add some more dependencies to doc/HOWTO.txt.

We recently added a dependency on libgmp-dev...
Merge remote-tracking branch 'remotes/david/david-transport-setup'
Fix a bug and add some docs on the setup() method.

pt_configs are per-transport (since on the server-side they contain
transport-specific parameters), so we should initialize one for each
transport.
Only use gmpy if it is installed.

If the library is not installed, the built-in (and slower) modular
exponentiation is used.
Add get_public_options method to BaseTransport

If the transport server wishes to prevent some server
transport options from being added to the BridgeDB then
the transport may override this method and return a
transport_options dict with the keys to be distributed.
Clean up code to filter server transport options
Add code examples to get_public_options doc str

Further document BaseTransport's get_public_options
using a simple example torrc and code sample.
Trivial edits and ChangeLog entry for #10243.
Another trivial ChangeLog edit.
fix #10342: make circuit an attribute of transport, rather than passing it in as method params
- also rm redundant "pass" statements, python doesn't need it if you have a docstring
rename handshake to circuitConnected, since it is just a callback and you don't *need* to do any sort of handshake
Fix bug when calling the __init__ of the base transport.
Trivial doc tweaks and ChangeLog entries for #10342.
Remove the PITS code.

The code was not functioning properly and I don't even remember how it
worked anymore.

I will leave the spec file around in case a poor soul encounters it
and decides to build it properly.
Add some more flags to TransportConfig.

Specifically a flag to tell us whether we are in external/managed
mode, and a flag to tell us whether we are client or server. These
will be useful so that transports can configure themselves during
setup().