core: Introduce base GraphicsBuffer
Currently, there exists the separation between the buffers provided by the clients and the buffers created by the compositor.
In hindsight, this separation is not great because it leads to specialized code paths in the output backend. For example, we have a separate code path for direct scanout and presenting composited frame. But you could view the latter case as "direct scanout of a compositor buffer".
The main idea behind the Buffer type is to provide a base buffer type for client buffers and composited frame buffers (not drm fbs) that we could pass around, import as textures, etc.