more robust handling of Deferreds
- fix some pylint warnings
implement a proper CLI and auto-select a free local port for flashproxy
- swallow errors in dummy Deferreds
Use syscall.SIGINT in place of os.Interrupt.

They are the same, but I want to also add handling for syscall.SIGTERM,
which doesn't have an analog in os.
Catch SIGTERM, and don't wait for a second signal.
Close listeners after first signal.
Keep count of running handlers.

Don't wait for a second SIGINT if there are no handlers running.
Log when exiting.
Wait 30 seconds for subprocesses to terminate.
Add a fixed-size stack type.
Use a stack, not a queue, to remember externally connecting addresses.

This allows to ignore spurious external connections that didn't make it
through the proxy chain and result in an internal connection.
https://trac.torproject.org/projects/tor/ticket/7167#comment:38
Have startChain return the processes it starts.
Rename startListeners → startChain and startChain → startProcesses.

I'm now thinking of a "chain" as the whole kit and kaboodle of internal
and external listeners and processes.
Use a struct to represent a chain.
Put the conns stack in the chain struct.
Define a ProcList type.
Define ProcList.Kill with better error checking.
Define Chain.CloseListeners with better error checking.
Consistent capitalization in log messages.