IIOD: Modify READ/WRITE functions to take an INPUT/OUTPUT keyword

The READ/WRITE commands accepted a channel ID as parameter. But the ID
in itself is not enough to identify a channel, as one "voltage0" channel
could be either input or output. Some devices actually do provide output
and input channels with the same ID.

Now, those commands when used for a channel also require a INPUT/OUTPUT
token to be specified.

This commit also comes with some non-trivial changes on the lexer, which
now does its job of identifying the tokens instead of just returning
strings as "WORD" tokens to the parser.

Signed-off-by: Paul Cercueil <paul.cercueil@analog.com>
Network backend: Send modified READ/WRITE commands

The commands now contain the INPUT/OUTPUT token, required by the IIO
daemon to correctly identify a channel.

Signed-off-by: Paul Cercueil <paul.cercueil@analog.com>
Ignore errors on missing Doxygen

Signed-off-by: Paul Cercueil <paul.cercueil@analog.com>
bindings/csharp: Update IOBuffer to latest API

Signed-off-by: Paul Cercueil <paul.cercueil@analog.com>
bindings/csharp: Make Context and IOBuffer disposable

Disposable means that their deletion can be forced.

Signed-off-by: Paul Cercueil <paul.cercueil@analog.com>