Make iio_context_get_device / iio_device_get_channel pure functions

With the same set of arguments, those functions will always return
the same value, so they can be declared as pure functions.

Signed-off-by: Paul Cercueil <paul.cercueil@analog.com>
Added API functions iio_context_find_device / iio_device_find_channel

Those functions can be used to retrieve iio_device / iio_channel
structures from their name or ID.

Signed-off-by: Paul Cercueil <paul.cercueil@analog.com>
Added API functions iio_device_find_attr / iio_channel_find_attr

Those functions may seem useless at first sight, since they require
a string corresponding to the attribute name as a parameter, and
return the attribute name...

However, they are useful in two cases:
- to check the presence of an attribute: if the function returns
  something, then the attribute exists
- to get a pointer to const data, if the parameter is a buffer or
  a malloc'd string.

Signed-off-by: Paul Cercueil <paul.cercueil@analog.com>
Network backend: Don't display errors on codes returned by the server

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