register/unregister activities in onResume/onPause instead of
onStart/onStop
Changed default controllable name in ControlledActivity

Removed hashCode() as it causes dead message issues as well as fragment
leak issues when application is destroyed then recreated by the system.

Note: by changing this behavior, it is no more possible to transition
from a ControlledActivity to another similar ControlledActivity, as
their names will be similar. It is thus up to the implementor of the
activity to define names accordingly, which should depend on application data
stable across restarts (e.g. item id...) and not volatile such as
memory address or hashCode().
Restructured controller to minimize repeated code bw support VS native

- New interfaces and abstract classes.
- support.X and native classes now act as "aliases" for the .core.X
  classes, which makes them easier to use (aka no generics parameters
in the method signature). no .core.X classes should need to be imported
in the application code anymore.