Batch quad data to avoid lots of Buffer.put calls.

On Android, Buffer.put to direct buffers is 10-20x slower than writing to a
float array. So we batch up a whole quad's worth of data and put that into the
Buffer with a single put() call.
Revamp to use full backing arrays instead of partial.

This further improves performance on Android sufficiently to merit the code
weirding; and it allows the iOS backend to take advantage of the fact that it
works directly on arrays anyway.