Idempotent Pipeline Handler support

The callback handler has changed dramatically. The TriggerDefinition
now takes a list of callback handlers. Previously the callback handler
had a single method on_trigger(). The signature of on_trigger() has
changed to include a "scratchpad" object ... which is just a dictionary.

In on_trigger() you should not do any actual work. You should simply
store your work in the scratchpad until the new commit() method is
called. In commit() you can do the actual work, like sending an email,
updating the database, emitting a new notification, etc.

This way, if there is an error in any pipeline callback step it
can be retried without duplicating work. If all the callbacks succeed,
commit() will be called.

If on_trigger() fails, the error will be logged in the database and
the stream will go to ERROR state.

If commit() fails, the stream will go to COMMIT_ERROR state. There
is a commit_errors counter stored with the stream so we can
limit retry attempts. Failing callbacks must manually be set back into
the READY state for retries.
trigger and commit error reporting added to debugger

Now the Ready worker will report failed on_trigger() and commit()
calls. These will only show up after a stream is processed for the
first time.
playing around with stream control in client.py. Will likely remove
Merge pull request #1 from StackTach/processing

Idempotent pipeline processing (with debugging)