Fix occasional test failures from port conflicts

If tests are running concurrently, the code in ThriftServer was getting a random port by binding a ServerSocket to port 0, checking what actual port was bound, then unbinding it (so that the ThriftServer could bind it).

This caused a race condition where the random port that is chosen is then claimed by a different server in a different test. The fix is to bind the actual server startup to port 0. A side effect of this is that if you are binding to port 0, you won't be able to get the real port until the server starts.
Bump up swift default max frame size to 64MB
Enable connecting clients using other protocols