Allow empty strings in "case" statements.  Closes #836
Zero length unknown attributes should produce an error
Switch to using tmpl_from_attr_substr in xlat_tokenize_expansion instead of duplicating the attribute reference parsing code

* fixup radius_request_name/radius_list_name to have signature/behaviour consistent with other substr type parsing functions.
* pass through 'allow_unknown' to tmpl_from_attr_substr which determines whether an unknown attribute produces a parse failure or not.
Don't remove backslash for chars which aren't escaped by us
Don't molest the DN we get back from libldap
Don't molest group names or group DNs either
Remove unused attributes
Fix use after free errors in xlat.c
Make uninitialised cursors behave sensibly
Rewrite xlat_getvp to take tmpls, and allow state attributes to be references in xlats

Because *someone* forgot to add the state list to xlat_getvp. What was that about too much abstraction?
don't escape attribute values if we were passed an escape function
Escape \n \r \t in the sql module escape function (now the xlat won't do it for us)
Typo fix in comment in rlm_rest

fundtion => function
Merge pull request #838 from qnet-herwin/documentation

Typo fix in comment in rlm_rest
Indent lists of attributes we're adding in rlm_ldap
Normalise group check DNs and LDAP DNs

Some special characters can be escaped such as ',' can be escaped either as \2c or \2C or \,
We don't care about case, because we do case insensitive matches on DNs, which isn't
entirely correct, but it's good enough.

We do care about format. Wherever we find the \xx version of a special char, we need to convert
it to the \special form, so strcmps work as expected.
Typo
Freespace calculation fixes for rlm_rest (JSON). Fixes #835
Use more specialised types in fr_cond_t
Not unknown, but undefined
Helps distinguish between the two cases.

- Undefined attributes are where the attribute hasn't been defined in the dictionary, or by the attribute string
- Unknown attributes are where the attribute hasn't been defined in the dictionary, but has been defined by the attribute string