layout: Support more types of selectors for style sharing.

This helps avoid problems with style sharing in common cases, often
caused by the user agent stylesheet.
Cleanup Element's AttributeHandlers

Remove notify_attribute_{changed,removed} in favor of a unified
notify_content_changed.
auto merge of #3859 : brunoabinader/servo/element-notify-content-changed, r=Ms2ger

Remove ```notify_attribute_{changed,removed}``` in favor of a unified ```notify_content_changed```. In the future, whether we decide to specialize ```document.content_changed()```, it'll be just a matter of adding a param.
Update azure. This removes the final rust-opengles dependency.
auto merge of #3861 : glennw/servo/update-azure, r=metajack
auto merge of #3838 : pcwalton/servo/style-sharing-enhancements, r=SimonSapin

This helps avoid problems with style sharing in common cases, often
caused by the user agent stylesheet.

r? @SimonSapin
s/AbstractNodeChildrenIterator/NodeChildrenIterator/
ChildElementIterator is now peekable
s/peek().is_some()/!is_empty()/
auto merge of #3864 : brunoabinader/servo/node-peekable-childelement, r=Ms2ger

This change avoid using ```child_elements().count() > 0``` approach (using ```child_elements().peek().is_some()``` instead).
layout: Make absolute position calculation idempotent.

This will be necessary for incremental reflow of absolutely-positioned
flows.
test: Mark the inline element in `inline_hypothetical_box_a.html` as
`vertical-align: top`.

We actually don't support the other values correctly, and so this test
was relying on a bug in incremental reflow.
layout: Make incremental reflow more fine-grained by introducing "reflow
out-of-flow" and "reconstruct flow" damage bits.

This is needed for good performance on the maze solver.