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.
direct: set layer UID for set_label

By not setting the layer UID before calling set_value here, the daemon
will open the user layer for the daemon itself. Instead, the daemon
should open the user layer for that user.

In a future commit, set_label will be disallowed for non-root clients,
but for consistency, make sure the UID is set.
test: start fixing check_daemon tests