[SystemInfo] fix JS code style
[common] Create C++ wrapper to replace ExtensionAdapater

Current ExtensionAdapter ends up merging the concept of extension and
instance (before called Context) together, and this causes confusion
understanding the execution of the code.

The new approach is to create a C++ pair of classes that represent
Extension and Instance. This mimics what we have inside Crosswalk, and
also is pretty much the same approach PPAPI constructs its C++ API as
well.

One nice consequence is that the subclass of Extension can be used to
store objects shared by all instances -- since it have the correct
lifetime. We can get rid of most ad-hoc singleton implementations in the
code.

One downside is that we resort to virtual methods in this new
approach. Even though the overhead is low, if this proves to be a
bottleneck for a specific extension, it's easy to fallback to using the
C API directly instead of the convenience.
[Notification] Use new C++ wrapper in common/

NotificationExtension now hosts the NotificationManager for mobile and
passes to the instances. For convenience, two different instance
interfaces were created, one for Desktop other for Mobile.

Behavior should not change after this patch.
Merge pull request #175 from cmarcelo/cpp-wrapper

Add a more friendly C++ wrapper for our C API
Merge pull request #173 from Ryan--Yang/master

[SystemInfo] fix JS code style
[SystemInfo][SIM] Fixed callback error and type mismatch error

The old design principle was if sim_get_** API's return value didn't equal
SIM_ERROR_NONE, we return an error callback. However, if the SIM status is
not READY, other attributes won't be gotten. So, here, we add sim_get_** API's
return value's checking. If the return value equals SIM_ERROR_NOT_AVAILABLE,
we reset the according attribute to empty and return true.