This is groundwork for gradients and images. This commit also refactors the interface for vertex attributes to use named parameters (via structs), for clarity.
This is preparation for fixing subpixel AA.