cursor-tracker: Start moving some code to a new file

I want the MetaCursorTracker to mostly be about retrieving cursor
information. Start moving the code that loads cursor images to a
new file, MetaCursor. Eventually, MetaCursorTracker's APIs will
all take MetaCursorReferences, and we can have a clean backend
split here.
cursor-tracker: Split out the code that updates the new cursor
cursor-tracker: Split the code that loads MetaCursorReferences out

The plan here is to move the usage of these interfaces to the consumer,
and then slam the code into backends.
cursor: Introduce accessors for the texture / GBM bo

We want to make this private, and have MetaCursorReference be
backend-defined, with the texture possibly loaded on demand.

We can't make the definition of MetaCursorReference truly private yet
because of the XFixes cursor. A victim of MetaCursorTracker trying to
do too many things at once...
cursor: Refactor out code that loads from XcursorImage
cursor: Move cursor caching layer to meta_cursor_reference_from_theme
cursor-tracker: Make set_grab_cursor take a MetaCursorReference
cursor-tracker: Make set_window_cursor take a MetaCursorReference as well
screen: Refactor update_cursor a bit
screen: Move XDefineCursor on the root window here

This is really an X11 front-end thing, so it doesn't belong in the
cursor tracker, which is a back-end thing.
cursor-tracker: Make set_root_cursor take a MetaCursorReference
cursor: Split out code that frees the MetaCursorReference
cursor: Split out the structure for the actual textures / buffers out

This will allow us to have a MetaCursorReference 'subclass' that's
lazily loaded. We currently always load all the images.

The long-term plan is to have a subclass for each "backend" and only
have CoglTexture as a common denominator. For the nested X11 backend,
we use XDefineCursor on our stage window. For the Wayland backend, we
would use set_cursor on our stage surface. For the native backend, we
would use the GBM code that's there right now.

The CoglTexture is there to be a "shared fallback" between all devices,
and also for the get_sprite API.

The odd man out is the X11 compositor case. For that, we need to move
the responsibility of setting the final cursor image out of
MetaCursorTracker, and simply have it be about tracking the used sprite
image and pointer position.
cursor: Refactor code to load cursor images out

We're going to make MetaCursorReference specialized and per-backend soon.
cursor: Reindent
cursor: Always use cogl_wayland_texture_2d_new_from_buffer

It makes our life so much easier.
cursor: Split out code that loads an image into a GBM buffer
cursor: Do less work if we don't have a connection to GBM at all