[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
bluetooth: Add BluetoothSocket.readData()

This will only return valid data if called during onmessage() callback.
bluetooth: Add support for BluetoothSocket.onclose() callback

This function will be called when the socket is closed.
bluetooth: Add support for BluetoothSocket.writeData()

writeData() is implemented using a "sync" message, because we need
to reply to the caller the number of bytes written.
bluetooth: Notify that the socket has closed

In some cases, the socket may close unexpectedly, for example, the
remote device goes out of range, we need to notify that the socket
has been closed in these cases.
bluetooth: Add BluetoothSocket.close()

This method allows the application to request the socket to
be closed.
bluetooth: Fix calling error callback with mistmatched parameters

Tizen tests expect the TYPE_MISMATCH_ERR exception to be thrown in these
cases, no need to call the error callback.
WIP: Bluetooth API parameter verification
bluetooth: Only try to create the manager proxy when org.bluez exists

In some cases, the name "org.bluez" may not exist in the bus, we should wait
for it to exist before we try to create a proxy for the manager object.

This is in preparation for allowing the name to disappear while the extension
is running, which may happen when we call SetPowered(off).
WIP: bluetooth: Simplify PropertyChanged handling

In most cases, we don't receive a ProperyChanged signal when it
was caused by using the BlueZ D-Bus API.
WIP: bluetooth: Add a platform method for powering the adapter

Some platforms have specific ways for powering on/off the adapters,
in the cases that we have specific methods we should use them,
and not the generic methods.
WIP: hacks for cleaner messages