Make send_buffer_requests_recursively batch messages

Also, rename it to get_buffer_requests_recursively to reflect that the
caller has to send all of the batched messages itself.
Separate the contents of ReRenderMsg into its own type

Make a ReRenderRequest type to represent the contents of a ReRenderMsg.
Currently, ReRenderMsg just takes a single one, but it in the future it
will take multiple requests.
Batch ReRenderRequests rather than render_task::Msg

Make get_buffer_requests_recursively create a ReRenderRequest rather
than a ReRenderMsg, and have its caller create the ReRenderMsg from
the ReRenderRequest.
Group ReRenderRequests by PipelineId
Only clone the RenderChan once per Pipeline
Make ReRenderMsg take multiple ReRenderRequests
Check whether the render task has permission to paint before painting

This matches the behavior of RenderMsg. It doesn't make sense to go to
the trouble of rendering if the render task doesn't have permission to
paint in the first place.
Batch replies in RenderTask::render
Make RenderListener::paint take multiple replies
Make the CompositorTask Paint message take multiple replies
Remove FIXMEs related to batching buffer requests
Merge pull request #2799 from zwarich/compositor-transactions

Batch buffer rendering requests and their replies in transactions