Data buffer - the proper replacement for `Blob`

This addresses major concerns by @bvssvni and @eddyb. Hematite should work with close-to-GL speed, and rust-graphics should be easier to implement.
These should be using `Offset` and `Size`