Catch DeadEvents from Otto and handle them

If an event is fired off and there isn't a subscriber waiting to recieve the
event, otto re-posts the event as a DeadEvent which holds a reference to the
original event.

DeadEvents were getting posted during step image capture if the user captured
an image, then immediatle started capturing another one before the upload
request returned.  If that happens and the image request comes back while we
are in capture mode, we store a reference to that deadevent and will retry it
again later once the handling activity is ready for it. This helps solve a
number of inconsistent state issues we were having with image upload.