WIP queue mechanism
squash! more WIP
squash! some more WIP

I think it's "complete" ish, but somethig about repr(o) is causing
argparse to go mad. I need to figure out wtf.
more WIP
move the json building to the consumer

this should save some memory for the queue since it's only storing the
timestamp and message now and not all of the other stuff for every
message.

for 100k queue entries before this change I was running about 104MB RSS.
after this change I'm running about 96MB RSS. Not much, but there's
probably plenty of room for optimization later!
add support for -O flag back
signal and exception handling in the producer
multiprocessing :(

so, with multiprocessing, if I killed both of the processes at once it
would break the pipe between them, so I'm moving back to threading and
gonna just make that work. It works as is, but now I need to rethink my
child thread as if it breaks it's going to end the world.
fixing some format issues in the README
queue size limit and error handling

this places a configurable limit on the size of the queue, drops
messages if the queue is full, and reports about said dropped messages
when the queue becomes not full again. This change is currently
untested, I'm committing for WIP preservation
-B flag

also removed debugging prints
removed debugging print