front: Implement generalized profile framework.

Will be used for the controller profile system, and could be used for
touchscreen and per-rom profiles as well.  Just subclass Profile and
ProfileActivity, and implement a persistence mechanism (e.g. using
ConfigFile).
front: Replace controller mapping with controller profiles system.

This is necessarily a big commit because it's a paradigm shift in the
way controllers are configured.  Instead of visiting the mapping screen
every time the user wants to change controller setup, they simply
change the controller profile.  There are a large number of built-in
profiles for ease of use, and the user can still define custom mappings
however they want.  It's easier at a glance to see how each controller
is configured, and fewer clicks through the configuration.

This also eliminates the controller toggle switch in the input screen,
which was not good for big-screen (controller-only) navigation.

This is also much more amenable to per-rom configuration.  The per-rom
override will only need to override a single profile name, not a whole
assortment of button mappings, deadzone, sensitivity, etc.
front: Remove a bunch of obsolete stuff left behind from last commit.

The previous commit made all this stuff obsolete.  Just breaking it out
as a separate commit, so that it's a little easier to see the important
stuff in the last commit.
cleanup: Rename InputMapActivity -> ControllerProfileEditActivity.

More accurately reflect the relationship between the ControllerProfile*
classes, and keep to a consistent lingo.