Add a new find_layer_with_pipeline_and_layer_id method

This method will be used to eliminate a lot of the ad-hoc recursive
searches that are present in the compositor layer code.
Rename find_child_with_layer_and_pipeline_id

Rename find_child_with_layer_and_pipeline_id to
find_child_with_pipeline_and_layer_id so that it matches both the
logical and actual parameter ordering.
Eliminate ad-hoc recursion in set_unrendered_color
Eliminate iteration over Option types

This idiom has been dying out in new Rust code; it's especially
confusing for layers because there is a higher chance of making the
mistaken assumption that the iteration is occurring over multiple
layers.
Rename get_buffer_requests to send_buffer_requests_recursively
Remove ad-hoc recursion from add_child_if_necessary
Remove pointless layer lookup

We just created the root layer, so there's no point in trying to find it
again.
Eliminate ad-hoc recursion in add_buffers
Merge pull request #2784 from zwarich/cleanup-compositor-recursion

Cleanup compositor recursion
Make pseudo :before and :after elements inherit style from attached
element, as per http://dev.w3.org/csswg/css2/generate.html, rather
than from the parent element.
Fix or selectively silence warnings in src/components.
Merge pull request #2787 from SimonSapin/warnings

Fix or selectively silence warnings in src/components.
Merge pull request #2785 from glennw/content-font-size

Make pseudo :before and :after elements inherit style from attached
Make compositor layer creation atomic

Instead of creating, sizing, and setting up layers using several
messages use only one. If the layer already exists, it will be updated
to reflect the new properties. The clip rect is still set in a separate
message, but that will be eliminated in a later commit.
Pass creation/update data for compositor layers in a struct

Use a new LayerProperties struct to hold all the data necessary to
create or update compositor layers. This reduces a lot of duplication
when passing it along.