front: Completely rewrote GL context management in GameSurface.

Contexts and surfaces are re-used and re-bound if possible.
front: Wire up new SDL2 destroy gl context method.
front: Added more lifecycle callbacks and logcats for GameActivity.
front: Make game lifecycle handling more robust.

The emulator should only be started when the activity is resumed, the
surface exists, and the window has focus.  These states aren't
guaranteed to change in any particular order, so we simply track each
one and try to change the emulator state whenever one changes.  To
keep this stuff clean, we modularize it into a separate class.

The new implementation makes a few lines in CoreInterface superfluous,
so we remove them.