Implementing get and unset for any type

This implementation defines the new type BUXTON_TYPE_UNSET.

Using this type is allowed for getting, unsetting and listening
notifications of change.

It adds the function buxton_response_value_type that enable
to discover the true type of the value of the response.

The type set to the key during the request is still available
using:
 key = buxton_response_key(response);
 type = buxton_key_get_type(key)
 buxton_key_free(key)

This type should differ from the type of the value of the
response only if it is BUXTON_TYPE_UNSET.

I choosed to alias BUXTON_TYPE_UNSET and BUXTON_TYPE_MIN,
what can make debate, because it minimize the change.
I'm thinking that changing it later, if wanted, will not be hard.

Change-Id: Ibcee8dcd2ed59986255e40a976395acd02e79090