Introduce a PNR_CANCELLED error code and call callback on cancellation

Currently, this happens when pubnub_done() is called during an ongoing
API call.  This allows the user callback to free user resources
associated with the API call.

At the same time, this allows internal finished_cb to do the same,
therefore obliterating the need for finished_cb_data specific internal_cb
and cancel_cb.
Make the code more-or-less safe for cb == NULL

With the current API calls, you more-or-less always want a callback.
However, in case of a leave() API call with implicit re-subscribe, you
might really not care.
pubnub_unsubscribe(): New call, preliminary version that just cancels ongoing subscribe
Introduce "subscription channelset" to pubnub context

Subscribe/unsubscribe now not just starts/interrupts a subscription
HTTP request, but also modifies the subscription channelset; a subscribe
then works on the complete channelset.

This specifically means that a pattern like

	pubnub_subscribe(p, "chan1");
	...
	pubnub_subscribe(p, "chan2");

is not backwards-compatible now. Before, the second subscribe would
listen to just chan2, now it will subscribe to _both_ chan1 and chan2.
Fix unsubscribe default callback - add proper support, add to pubnub-sync
pubnub_unsubscribe(): Factor out pubnub_leave()

We will need extra flexibility in unsubscribe().
pubnub_unsubscribe(): Issue leave() even if no subscribe call is ongoing
pubnub_unsubscribe(): Restart ongoing subscribe call with new channelset if applicable

This also introduces a more generic resubscribe infrastructure which we
hope to use within pubnub_subscribe() as well.
pubnub_unsubscribe(): Reset timetoken to 0 after a complete unsubscribe
pubnub_channelset_printbuf(): Factor out
pubnub_subscribe_do(): Return some pieces to pubnub_subscribe_multi()
Make pubnub_subscribe() perform a separate join call and restart ongoing subscribe
Bump libpubnub version from 0.1 to 0.2
Add a new example libevent-sub to demo a multiplexing subscribe/unsubscribe
Introduct struct channelset to describe a set of channels
pubnub_channelset_*(): Take struct channelset *dst instead of struct pubnub *p

We are preparing ground for auxiliary channelsets.

As an aside, due to this change we now reset timetoken 0 on fresh
subscribe, not complete unsubscribe.
pubnub_channelset_*() -> channelset_*()
Use 'cs' for misc. channelset variables to eschew surplusage
pubnub_subscribe_multi(): Factor out pubnub_join()
C++ compatibility of our C code - pointer typecasts

With MSVC, we will need to use C++ mode. Changes picked out by Petr Baudis.