[FEATURE] Add support for gradient fills for polygons

Adds a new Gradient fill type for polygon layers.

Includes support for:
- Radial, linear and conical fills
- Gradient coordinate modes, which allow for gradients to either apply just to a single feature or across the whole viewport
- Gradient spread modes
- Setting start and end points via coordinates (in the future it would be nice to add a GUI control for setting these)
- Rotating gradients by a specified angle
- Either simple two color gradients or using a complex QGIS gradient color ramp
- Data defined control of gradient options
- Test suite and python bindings