Prefer `cookies.signed` in Rails

`cookies` is fine for storing non-sensitive data, but using `cookies.signed`
makes sense as a default. Using `cookies.signed` means you don't need to worry
about whether data is sensitive.

Cookies, even signed ones, can be easily read by the end-user (see
http://www.andylindeman.com/2013/02/18/decoding-rails-session-cookies.html).
Using `cookies.signed` only prevents the end-user from *writing* them.
Use v#.#.# convention for OSS release commits

This keeps us in line with tools such as
https://github.com/tpope/git-bump and lets us use tools to auto-promote
releases when we have a consistent interface.
Raise instead of returning false in AR callbacks

We never check whether a `#destroy` fails in our controllers:

    def destroy
      article = Article.find(params[:id])
      article.destroy
      redirect_to articles_url
    end

Because of this history, it would cause confusion and potential bugs if
we introduced a normal `before_destroy` into any of our models. Not only
will we need to check the result of `#destroy` for any controller using
that model, but we'd also need to check the return value for any
controller using models that associate with that model.

Since callbacks are used for validated database objects and are expected
to succeed, we should raise on failure. This will roll back the
transaction and notify the exception handler (e.g.  Airbrake).

This is true of all callbacks, not just `before_destroy`.
Fix link for "Bundler binstubs"
Prefer `protected` over `private` for non-public attributes

- With warnings enabled, private attributes cause a warning on MRI
  (doubly important for open source libaries, which should not emit
  warnings)
- Reduces churn when adding comparison or equality methods, since you'll
  likely need to access the attributes of the other object
- Reduces churn when adding a writer, since it is impossible to call
  private writer methods.
Specify guideline for required keyword arguments