Functions for easy coloring

Adds a family of functions for mapping values to colors.

 |Continuous values|Categorical values
---|---|---
Continuous colors|`colorNumeric`|N/A
Discrete colors|`colorBin` and `colorQuantile`|`colorFactor`

This makes it possible to describe most color mappings in a single function call.

Hat tip to @hadley, who has forgotten more than I will ever know about scaling.

I would love some eyes on this now but there are some open questions.

- [ ] What happens when NA is fed in? `colorNumeric(...)(NA)` Should that return NA, or (optionally) you provide `colorNumeric` with an NA color?
- [ ] What happens for `colorNumeric`, `colorBin`, and `colorQuantile` if a value is fed in that is too low/too high for the domain? Snap to the nearest valid value, with a warning? Return NA? Provide an option?
- [ ] What happens for `colorFactor` when a value is fed in that isn't one of the expected levels? Return NA? Return an NA color?
- [ ] `cut` takes `include.lowest` and `right` options, I was thinking about exposing them on `colorBin` but reversing the defaults.
I'd be tempted to make this `brewer("Blues")` instead of `"brewer:Blues"`:

```R
brewer <- function(pal) {
  if (!requireNamespace("RColorBrewer", quietly = FALSE)) {
    stop("RColorBrewer package is required for brewer palettes")
  }
  RColorBrewer::brewer.pal(RColorBrewer::brewer.pal.info[pal, 'maxcolors'], pal)
}
```

(Also note better way to check if package available)