Writers now use Deferrables for signaling start/stop

This makes starting/stopping readers easier, as it's now clearer when
all writers are stopped or running (and thus the reader can be stopped
or started successfully without causing data loss to the writer).
Handle extra args for new symbol writers
Start each reader using an EM iterator
Fixed start tests
Moved stubs to before block
Added callbacks to Pants, readers, and writers

Pants needs to be able to tell when all readers and their associated
writers are all done so it can shutdown the reactor.  Added main
callback that gets passed in to readers; readers must then call that
when they're done (in their finisher).

Readers need to be able to tell when their associated writers have
finished writing; they also need to be able to tell their writers that
they're done reading so the reader can shut itself down.

Writers need to be able to tell their reader that they're done, so the
reader can shut itself down and tell Pants that