21910 - Publishing time should not be part of the request time

In the past publishing had a unconfigurable timeout of 2 seconds which
was part of the agent timeout. This caused clients to break when
publishing large amounts of messages with direct addressing.

When successfully publishing large amounts of messages new versions of
ActiveMQ would block sending if messages weren't consumed.

This commit refactors the client class by separating the publish
timeout from the request time. The publishing timeout can now be
configured in the client config file by setting the publish_timeout
option to an integer value, or by using the --publish_timeout flag on
the cli.

This commit also adds the ability to thread the client which starts both
a publisher and receiver thread. This removes the possibility of being
blocked by ActiveMQ. The threaded client can be configured in the client
config file by setting threaded=true, or by using the --threaded flag on
the cli.