Refactor obfs4proxy (and the support protocol code)

While the current code works, it is very "A C programmer is writing Go". This mostly applies to the support protocol code, and refactoring it to make more use of channels/goroutines would simplify the code.

This ticket also encompases "general cleanup" to the code as I am not quite happy with some parts of the code.