layout: Implement a subset of CSS linear gradients per the CSS-IMAGES specification.

This implements a subset of the CSS `linear-gradient` property per the
CSS-IMAGES specification:

    http://dev.w3.org/csswg/css-images-3/

The full syntax is parsed, but only the beginning and end color stops
are used, and gradients are clamped to the nearest 90 degrees. It should
not be architecturally difficult to add the remaining pieces, but in the
interests of bounding the size of this patch that work has been left to
follow-ups.

Improves GitHub.

r? @glennw
I think Simon wanted to move away from using peekable() and instead use the BufferedIter and ParserIter types for new parsing code. Simon wrote some details for me in the media queries PR (https://github.com/servo/servo/pull/3610).