Add buffer type

This PR adds an abstract buffer type, which serves as a unified interface for variaous buffers, both wayland based and internal ones.
Order of comment tags wrong, `@warning` first, `@return` as very last comment tag.