Fix iio_channel_[read|write][_raw] not reading the last sample

Signed-off-by: Paul Cercueil <paul.cercueil@analog.com>
Added backend function get_buffer, and use it in buffer.c if possible

Instead of using read() to copy new samples to an iio_buffer's internal
buffer, it will now use get_buffer() with the backends that implement
it. It avoids copying the full buffer.

Signed-off-by: Paul Cercueil <paul.cercueil@analog.com>
Local Mmap: Added backend

This backend reuses most of the local backend, but provides an
alternative method to read the samples from the kernel using mmap().
It should be preferred over the regular local backend when dealing with
high-speed devices that provide the corresponding kernel interface.

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