VertexBuffer uses VBO for vertex submission

Unlikely to be any performance improvement at present because the only user of
VertexBuffer (RenderablePatchWireframe) is creating and destroying the buffer
with each render call. However the code is more compatible with future OpenGL
versions where the only acceptable way to submit geometry is through VBOs.

Note use of offsetof() macro in ArbitraryMeshVertex; may require fix-up on
MSVC.
Fixed crash on Linux due to thread-unsafe write to ConsoleView
Selected patches have visible wireframes from all directions
Renaming and code cleanup
Avoid unnecessary VBO allocations when re-rendering patches

Introduced VertexBuffer::replaceVertexData() which uses glBufferSubData to
replace the VBO's data store with a vector of vertices from another
VertexBuffer of the same size or smaller. A new allocation is only required
when the number of vertices in the patch mesh changes (e.g. after a significant
change in geometry).