Implement user style sheets

This is based on the design document at https://goo.gl/jzD8Zk

Browser extension developers expect their style sheets to be treated as
user style sheets, as "!important" user declarations have a higher
precedence than "!important" author declarations.

Therefore, in order to implement this behavior, this patch makes the
following changes:

 1.  MatchResult now maintains user rules in addition to UA and author
     rules
 2.  DocumentStyleSheetCollection no longer cares about injected style
     sheets
 3.  StyleEngine now treats injected style sheets as user style sheets
 4.  StyleResolver now calls its new MatchUserRules method right after
     calling MatchUARules
 5.  The ApplyMatchedStandardProperties method of StyleResolver applies
     important properties in the correct order

BUG=632009

Change-Id: If752b1af762f233dae49bb5bffd6d5e6a4b54acd
Reviewed-on: https://chromium-review.googlesource.com/641294
Commit-Queue: Rune Lillesveen <rune@opera.com>
Reviewed-by: Rune Lillesveen <rune@opera.com>
Cr-Commit-Position: refs/heads/master@{#509096}
14 files changed