mesa: add indirect drawing buffer parameter to draw functions

Split from patch implementing ARB_draw_indirect.

v2: Const-qualify the struct gl_buffer_object *indirect argument.
v3: Fix up some more draw calls for new argument.
mesa: implement GL_ARB_draw_indirect and GL_ARB_multi_draw_indirect

v2:
Removed some stray extern qualifiers.

Documented use of Draw*IndirectCommand sizes.

Removed separate extension enable flag for ARB_multi_draw_indirect
since this can always be supported by looping.

Kept generation of GL_INVALID_OPERATION in display list compile.
The spec doesn't say anything about them, but all the direct drawing
commands that support instancing do the same.

v3:
Initialize DrawIndirectBuffer with NullBufferObj.

Only hook up the Draw functions in vtxfmt.c if API_OPENGL_CORE
instead of _mesa_is_desktop_gl.

Fix index bounds.
gallium: add PIPE_BIND_COMMAND_ARGS_BUFFER

Intended for use with GL_ARB_draw_indirect's DRAW_INDIRECT_BUFFER
target or for D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS.
gallium: add facilities for indirect drawing

v2:
Added comments to util_draw_indirect, clarified and fixed map size.
Removed unlikely().
st/mesa: add support for indirect drawing

v2:
Fix for constness of indirect buffer argument.
Remove separate extension enable for multi_draw_indirect.
nouveau: set GPU_WRITING flag in buffers' nouveau_transfer_write

To make sure we wait for the GPU to write the data before doing
things like indirect drawing.
nvc0: add support for indirect drawing
nvc0: fix translate path for PRIM_RESTART_WITH_DRAW_ARRAYS