Metadata cache and multiple metadata channels

Implement a cache for the kernel metadata and a list of metadata
channels.

When new metadata is appended, all metadata channels are awakened so
they can return from poll and get the newly added metadata
This allows to request the metadata multiple times by creating multiple
metadata channels (useful for snapshots).

With this new feature, the poll and get_subbuf ring buffer operations
are now overridden by lttng-abi for the metadata channels, to check the
cache before doing these operations.

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>