ui-console/ae-bridge: Reduce upstream diff by moving code to bridge.

Also, invoke the Java callback for any state change, not just run/save/
load.  This will enable us to simplify a bunch of code in Peripheral-
Controller and GameMenuHandler.
core: Remove android hack, revert to upstream.
front: Allow more than one state callback to be registered at a time.

The startup-autoload sequence listens to the run state change, but the
GameMenuHandler should also be listening for slot and speed changes so
that it can update the UI.  The listening windows overlap, so we need
to permit multiple listeners.
front: Use asynchronous callbacks to keep UI in sync with core.

This fixes up a few long-standing hacks and puts all the Java-side core
interface stuff where it belongs -- in CoreInterface.java.  GameMenu-
Handler and PeripheralController are now decoupled from each other, and
the GameMenuHandler singleton hack can be removed.  Java-side state
variables are minimized in favor of just reading state from the native
side directly.
front: Perform auto-loading asynchronously during emu startup.

No need to block the whole app as the emulator starts up.  Eliminates
potential source of ANRs and simplifies the code at the same time.