These are the Sender and Receiver shims for qpid-interop-test AMQP types test.
They send and receive messages via an AMQP broker which is assumed to be running
at a well-known location/port.

These are invoked on the command-line from the test program using the following
command-line options:

1. broker address (ip-addr:port)
2. queue name
3. AMQP type under test
4. JSON list of stringified test values (Sender) "[\"val1\", \"val2\", ... ]"
   or
   A number indicating how many messages to expect (Receiver)

Any errors/exceptions are sent to stderr.
The Sender does not print anything onto stdout.
The Receiver prints two items onto stdout:

1. The AMQP type under test
2. JSON list of stringified test values received (matching that sent to the
   Sender)

The top-level test program (amqp_types_test.py) will launch each shim as needed
with its command-line parameters and will receive output from stdout and
stderr. These outputs will be checked to determine pass/fail. By default, the
JSON sequende sent to the Sender must match the JSON sequence received from the
receiver for the test to pass.

The AMQP types and test values are all set within the top-level test program.

Required modules
----------------
 rhea (https://github.com/grs/rhea.git)
 node-uuid (via npm)

