client: support non-direct set-label
util: add helper function to create groups from keys
direct: enforce groups for set_value

Also, enable the Smack check for client->group.
direct: enforce groups for get_value
update TODO
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.
Add an API for create_group
util: add free func for _BuxtonKey*
direct: plug memory leaks in get_value
direct: plug memory leaks in set_value
direct: fix memory leaks in unset_value