Default to AsyncJSONTransport if we are in a Servlet 3.1 container.
Refactored HTTP transports.

Move the main logic of message processing to AbstractHttpTransport
and added abstract methods overridden by subclasses to customize
behavior for stream-based transports (using blocking writes) and
async-based transports (using async writes).

Removed isAlwaysFlushAfterHandle() functionality, since modern
browsers do not need it anymore.
This functionality was there because old browsers would download
but not execute scripts that were injected after a /meta/connect
held by the server.

Refactored tests to run both async and stream transports via JUnit's
@Parameterized.