Canary spec

Merge the `canary-spec` branch into my fork's `master` branch.

After this is done, the README in the `canary-spec` branch can be updated with my Travis CI link and set as the default branch here.

The upstream pull-request should be made from my `master` branch which will only contain the new spec.