Actually implement uninitialized vertex buffers
Implement index buffers for OpenGL.

Since vertex and index buffers are so similar in OpenGL, so I refactored
the two to use a common implementation backend. This also resulted in
minor changes in the D3D backend. Also, switched to using 'int' instead of
'size_t' as inputs to many of the buffer functions at the behest of Elias.
Partially implement indexed buffers for D3D.

Line loop is not yet implemented. Additionally, refactored out the
software fallback into a dedicated function.
Fix build without D3D
Rename SHADER_ENTRY to DISPLAY_LOCAL_DATA as it'll be used for more than just shader storage.
Implement ALLEGRO_PRIM_LINE_LOOP for vertex buffers for D3D
Disallow line loops and point lists for indexed buffers.

It's just too hacky to implement for the Direct3D backend. Essentially,
both require reading access to the index buffer which isn't something that
I want to depend on the parameter to al_draw_indexed_buffer. In principle
these are rare primitive types anyway, so it's not a big issue.
Document the index buffer API
Fixup the indexed buffer API documentation