Refactor size mixin

- Allow `auto`, `inherit`, and `initial` values
- Allow unitless number values
- Allow intrinsic sizing values (`fill`, `max-content`, `min-content`, `fit-content`)
- Allow `calc()` CSS function
- Fixes #391
- Fixes #468

Many thanks to @HugoGiraudel for the help in the issues above and for writing [this article](http://www.sitepoint.com/bulletproof-function-validate-length-values-sass).

There’s one concern with this moving forward: it’s a breaking change (would have to wait for Bourbon v5.0). The previous mixin used a [variable argument](http://sass-lang.com/documentation/file.SASS_REFERENCE.html#variable_arguments) approach (like this: `@include size(30px 70px);`), but this refactor uses a [comma-separated argument](http://sass-lang.com/documentation/file.SASS_REFERENCE.html#mixin-arguments) approach (like this: `@include size(30px, 70px);`, note the comma).

Our [`linear-gradient`](http://bourbon.io/docs/#linear-gradient) mixin—for example—uses commas and I think the size addon should too, because the values passed are each going to their own property (`width` and `height`). Our [`em`](http://bourbon.io/docs/#px-to-em) function also uses commas.

How are we defining what uses commas and what doesn’t?
There's a `@function contains(...)` defined right? It's not in this PR