KMS: Unify buffer management for all plane types
MetaDrmBuffer are now held closer to where the object is actually used.
MetaKmsPlaneAssignment holds a reference to each buffer that is going to be assigned. After it has been posted each
MetaKmsCrtc holds the buffer references for the DRM FBs it is about to scan out as well as those still scanning out from previous frames. Buffers get released after the first scanout after they have stopped being used.
Aside from requiring less code this will simplify future work in:
- Overlay planes
- Triple buffering
- Multi-cursor support