Add `validate_uniqueness_of_(:foo).allow_blank`

Complements [`validates_uniqueness_of(:foo, allow_blank:
true)`](http://api.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html#method-i-validates_uniqueness_of).
Revert "Add `validate_uniqueness_of_(:foo).allow_blank`"

This reverts commit fcbc16e7d6e2affcdd760e8e05939bf6e0ed849a.

This commit is slated for the 2.7.0 release.
Add a script to install appraisals in all supported Rubies
Adjust gem install script to not use latest Ruby

We're already using the "latest" Ruby which is 2.1.1 at this point in
time.
Add a script to run all tests on all Rubies
Use same assertion class as Rails, if loaded

Given this scenario:

* Using Rails 4.1
* Gemfile has `gem 'shoulda-matchers', require: false`
* spec_helper has `require 'shoulda/matchers'` following
  `require 'rspec/rails'`
* Using Spring to run tests

matchers that delegate to assertions in Rails (e.g. `render_template`
and `route`) will fail in the wrong way if used. They fail because in
order to use these assertions, we expect that the assertions will
raise a specific exception, an exception that corresponds to whichever
test framework that Rails is using. For Rails versions that used
Test::Unit, this is Test::Unit::AssertionFailedError. For current Rails
versions, which now use Minitest, this exception is Minitest::Assertion.

The problem is that instead of asking Rails which exception class it's
using, we are trying to detect this exception class ourselves (for
cases in which Rails is not being used). This leads to the wrong class
being detected: when using a Rails version that uses Minitest, we choose
Test::Unit::AssertionFailedError as the class. This happens using the
exact scenario above because even though shoulda-matchers is loaded
after rspec-rails, rspec-rails itself defines
Test::Unit::AssertionFailedError.

Also add Cucumber tests that confirms this exact scenario works.
Tweak failure message for allow_value

allow_value currently gives an error message that looks like this:

    Expected errors to include "must be greater than 0" when amount is set to 0, got errors: ["amount must be greater than 0.0 (0)"]

This is confusing because the error message here is "must be greater than 0.0",
not "amount must be greater than 0.0".

With this commit the message changes to:

    Expected errors to include "must be greater than 0" when amount is set to 0, got errors: ["must be greater than 0.0 (attribute: "amount", value: 0)"]
Prefer protected over private attributes
Delete method redefining for OptionVerifier
Delete unused variable
Use the correct appraisal names in .travis.yml
Remove all Ruby-emitted warnings

Run RSpec tests with warnings enabled so we stay on top of this better
in the future.
Add delegate_matcher to README
Bump version to 2.6.2
The matcher is actually called delegate_method
Fix autoredirect to docs for latest version
Link to the new docs
Check correct columns are present in join table

The `have_and_belong_to_many` matcher could give a false positive if the
join table is present but does not contain the correct columns. Check to
see if the columns exist in the join table and provide a meaningful
failure message if one or more of the columns are not present.
Join table check for habtm w/ custom foreign keys should still work

If the habtm association in question specifies a custom foreign_key or
association_foreign_key, when the habtm matcher checks that the join
table has the correct columns, it should use the specified column names
instead of the defaults.
Add NEWS for #511