core: Do not send group and name in notification responses

We already store a copy of the key in the client side of the API for
notifications, and no longer need to send the group and name in our
response messages.

Signed-off-by: Michael Ikey Doherty <michael.i.doherty@intel.com>
test: Update check_daemon to notification changes

Signed-off-by: Michael Ikey Doherty <michael.i.doherty@intel.com>
Update client API to new notification changes

Notification responses are now stored in the first and only element
of our response list, as we now store the interested key in the client
side of the API.

Signed-off-by: Michael Ikey Doherty <michael.i.doherty@intel.com>
Update TODO

Signed-off-by: Michael Ikey Doherty <michael.i.doherty@intel.com>
demo: Do not segfault when key is not found

We now make our callback quite robust and handle various cases where
an operation may have failed (async), ensuring we do not crash just
because a key does not exist.

Signed-off-by: Michael Ikey Doherty <michael.i.doherty@intel.com>
Remove element from hash before freeing key

To avoid leaving invalid memory in a hashmap remove the element
first before freeing the element when cleaning up.
Fix label memory leak on get_value
db: Handle error when allocating a db file name
Update todo
shared: get_value shouldn't always look at user layers

If layer name isn't specified get_value should only look at user layers
if there isn't a key in a system layer.
client: support non-direct set-label
util: add helper function to create groups from keys
util: add free func for _BuxtonKey*
direct: enforce groups for set_value

Also, enable the Smack check for client->group.
direct: enforce groups for get_value
direct: enforce groups for unset_value
serialize: accept NULL values for strings

There is an assert that disallows NULL string values, so remove it.

Also, in case a key's value is NULL, its length will not count towards
the serialize "size", so the first deserialize lookahead check fails. We
have not been passing NULL values around, so this conditional never
failed.

Note that NULL values only make sense for the STRING type, so make sure
we check for non-strings in the appropriate length check.
shared: Add test workaround for set label

In order to let tests set_label in order to create groups to be used
by buxton add a temporary workaround to look at an environemnt variable
that when set to "0" will skip the check for root.
test: create groups for check_buxton tests

Now that groups are required to exist before setting keys, make sure the
check_buxton test suite has the appropriate groups initialized.
test: workaround test failure in memory_backend_check

Since the memory backend does not understand groups (yet), doing a
get_value for a key within an existing group will return the dummy group
data value ("BUXTON_GROUP_VALUE").

Work around the issue for now by validating that the call returns what
we expect it to.