frontend: Make sure to not read to much from a connection buffer.

The current command, as stored in the connection buffer, is not necessarily
nil-terminated. That's only the case if there's no further data in the buffer
(which will *often* be the case in the current implementation when using
'sysdb' as the client) but the code should never rely on that.

In cases where the function operating on the data does not support specifying
the length of the string to work on, copy the data to a temporary buffer
first.
data: Simplified the implementation of expr_eval().
frontend: Renamed sdb_fe_<cmd> functions to sdb_fe_exec_<cmd>.

That name better describes what the function is doing.
frontend: Split up command_handle() into several sdb_fe_<cmd> functions.

One big function is not very nice to handle.
frontend: Let sdb_fe_<cmd> check the current command.

Now that the code is no longer internal-only, we'll have to be a bit careful
about what the users passes in.
frontend/proto.h: Documented the current frontend protocol.
frontend/parser: Simplified handling of MATCHING and FILTER clauses.

Make LOOKUP MATCHING clauses optional.
frontend/parser: Let ‘LIST’ and ‘FETCH’ accept optional filters as well.

This allows for more consistent results across different types of queries.