shared: Fix compiler warnings in buxtonsimple for GCC 4.8.1

Due to the use of proxied macro prints, the compiler is under the impression
that the variables are unused before printing in buxton_debug. As opposed to
clearly marking them __attribute__ ((unused)) and causing confusion, we
explicitly tag them as "_bxt_used_", which in reality is defined as
__attribute__ ((unused)) - however it keeps the usage within the code more
logical.

Signed-off-by: Ikey Doherty <michael.i.doherty@intel.com>
TODO: Add hashmap replacement to list of items

This is in relation to issue #124

Signed-off-by: Ikey Doherty <michael.i.doherty@intel.com>
libbuxton: Set strings to const for the API

Because clients are often using "const char *" instead
of just "char *" in their internal API, it make sense
to offer this new API. Their are two main reasons:
- passing a "char*" for a "const char*" is safe
- the developer doesn't have to ask himself if removing
the const with a cast is okay or not

This change will bump our library version.
shared: Take commandline configuration option as const
libbuxton: Take set_value argument as const
libbuxton: Prefixing types with BUXTON_TYPE_

The items STRING INT32 UINT32 INT64 UINT64
REAL DOUBLE BOOLEAN are potentially conflicting.

Prefixing it is merely better.
test: Don't fail on EAGAIN write errors
shared: Improve array index bounds checking
shared: Use same index/length type for BuxtonArray
shared: Use braces in buxtonarray

Signed-off-by: Ikey Doherty <michael.i.doherty@intel.com>
shared: Improves array

The allocation is improved to avoid the buggy call to
greedy_realloc.

The first allocation is using the capability of
realloc to get NULL pointer. Thus there is only
one path and avoids a test.

The test of index ranges is now correct.

Change-Id: If67ffa2f8bfe1e5aa3b1fedb0f04e84a3abec9da
Signed-off-by: José Bollo <jose.bollo@open.eurogiciel.org>
libbuxton: 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
libbuxton: Adding listing names of groups and keys

The function buxton_list_names is listing either the
names of the groups or of the keys of a group.

Listing layers was considered but rejected for this
version in the reason of its wider impact on the code.

The manual is updated to document the new functions
 - buxton_list_names
 - buxton_response_list_count
 - buxton_response_list_name

Change-Id: I12606d4915adca7d12058cac8ec70cd5959aa748
libbuxton: Improvement of the memory backend

Change-Id: I4cb8873da55299a4f0e0256fe146b62f80c8b470