[SystemInfo] Use singleton model to support multi frames

The old design is one frame one set of listening mechanism. So when there are multi-frames,
there will be multiple sets of events. However, the vconf only support to register the first one
when asking twice for the same vconf_notify_key_changed with same Key and vconf_callback_fn
and the others will be ignored. So, the old framework couldn't resolve the vconf issue.

The current design uses singleton event listening mechanism.
Every property object (such as: cpu, local, storage ...) is singleton.
Each of them will maintain an according events list. Use StartListening(Context* api) to
push back the current context to the according list. Use StopListening(Context* api) to
remove the current context from the list. When the property value changed,
iterate the list to post message to all the listenng context.
Merge pull request #155 from qjia7/master

[SystemInfo] Use singleton model to support multi frames
[Time] Add getAvailableTimezones
[Time] Fix TZDate constructor

Both date and timezone are optional.

Now supporting the following example:

foo = new tizen.TZDate(null, "Europe/Berlin");
[Time] Change the way of construction of TZDate

This will reduce the possibility of mistakes between things
like getDate() and getDay().
[Time] addDuration is now throwing exceptions
[Time] Add the checks for timezone property
[Time] Solve instanceof problem

Some tests are checking the type of methods return.

For example:
assert_true(returnedValue instanceof tizen.TZDate, "TZDate check");

The way tizen.TZDate was implemented, some methods were returning
instanceof 'undefined'.

Now with this other way to implement tizen.TZDate, the methods are
returning the correct 'instanceof'.
[Time] Fix timezone -> timezone_ mistype
[Time] Fix unecessary check
[Time] Properly format toDateString, toTimeString and toDateTimeString
Merge pull request #182 from ricardotk/wip

[Time] Add and fix features
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 parameter verification according to API spec

The tests expect us to be more careful with that are passed as parameters
than we are at the moment.
bluetooth: Only create DBus proxies when the org.bluez name 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 tracked objects.

This is in preparation for allowing the name to disappear while the extension
is running, which may happen when we call SetPowered(off).
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.