Gradients

Adding gradient support. Still needs:

- Tests
- A simpler api for setting gradient angle
- Some other stuff