Removing unreachable panic("Unreachable") lines
TestCompareMatchers pushing all messages in one

Previously we would push a single message into the matcher and reference
matcher and checking the output of each. This creates a message race,
if the test code checks the output channel before either matcher has
produced its output it will assume there was no output.

Now we push all test messages into the matcher and reference matcher and
then push a final SHUTDOWN message into each matcher. Now we can listen
too each matcher's output channel until we read a SHUTDOWN message. Then
we know we have read all of the messages from each matcher and can
compare those with confidence.
bin/perf/ package now tests reads and writes

Previously we were only testing how fast we could write onto a channel.

Now we start a goroutine with the matching engine. Then we start a
goroutine sending order messages to the matching engine. Finally we
reuse the current goroutine to read messsages coming out of the matching
engine until a msg.SHUTDOWN message is received.

The timing is made from when we start reading messsages from the
matching engine until the msg.SHUTDOWN message is received. It is
possible for this to under report the actual running time, if the writer
and matching engine get a large head start on the reader.