Move existing dead event code to BaseActivity

Now all Activities automatically connect to APIService and retry dead
events when resuming.
APIService: Simplify DeadEvent handling
APIService: Only store dead APIEvents

Other events sent through otto don't have the problem with really long
operations e.g. StepEditEvent should be responded to immediately because
the Activity will always receive it since the Fragment can only send the
event if it is running.
BaseActivity: Generate unique id for instances

Will be used to handle dead APIEvents in APIService.
Only retry dead API events for same Activity

Now dead APIEvents will be retried iff the API calls were initiated by
the Activity calling retryDeadEvents.
BaseActivity: Check API result activityid

Now Activities only get API events if it was the one to initiate the API
call in the first place.
API parsing: Handle GSON Exceptions
Fix retrying dead events edge case

We must also retryDeadEvents in onServiceConnected if the orientation of
the Activity is different from when it originally initiated the request.
Merge branch 'retry-unhandled-api-results'