Update guide on CONTRIBUTING

As a contributor you're no longer required to add NEWS items. We'll do
that ourselves :)
Remove require that was causing warnings
Tweak allow_value failure_message

This commit changes the failure message that `allow_value` generates so
that it reads a bit nicer.

When a call to #valid? resulted in validation messages, `allow_value`
formerly failed with this message:

    Expected errors to include "the message" when attr is set to "some value", got errors: ["another message (attribute: \"attr\", value: \"some value\")", "some other message (attribute: \"attr2\", value: \"some other value\")"]

Now it fails with this message:

    Expected errors to include "the message" when attr is set to "some value",
    got errors:
    * "another message" (attribute: attr, value: "some value")
    * "some other message" (attribute: attr2, value: "some other value")

Similarly, when a call to #valid resulted in an exception, `allow_value`
formerly failed with this message:

    Expected errors to include "the message" when attr is set to "some value", got: some message

Now it fails with this message:

    Expected errors to include "the message" when attr is set to "some value",
    got: "some message"
Remove warning from RSpec

RSpec 3 will no longer infer the spec type from the file location, so
2.99 prints this warning:

    --------------------------------------------------------------------------------
    rspec-rails 3 will no longer automatically infer an example group's spec type
    from the file location. You can explicitly opt-in to this feature using this
    snippet:

    RSpec.configure do |config|
      config.infer_spec_type_from_file_location!
    end

    If you wish to manually label spec types via metadata you can safely ignore
    this warning and continue upgrading to RSpec 3 without addressing it.
    --------------------------------------------------------------------------------

So this commit merely adds the snippet to get rid of that warning.
Refactor some allow_value tests

Specifically, tests around the :against option to `with_message`.

* Extract record builder to a separate helper method / class in
  AllowValueMatcherHelpers
* Fix ModelBuilder and ClassBuilder so that they can be required in
  isolation
Refactor validation_confirmation_of tests

Extract record builder code to
builder_for_record_validating_confirmation (located in
Helpers::ConfirmationMatcherHelpers). This includes the name of the
attribute being tested, as this doesn't really matter to our tests.
Fix allow_value + i18n validation messages

Previously, `allow_value` failed when qualified with `with_message` and
the `:against` option. This also happened to propagate downward to
`validate_confirmation_of` since it uses `allow_value` + `:against`
(when a confirmation validation fails, it assigns the error message to
the *_confirmation attribute, not the attribute being confirmed).
This commit fixes both matchers.
Enable caching
Update NEWS [ci skip]
Update README [ci skip]
Update badges [ci skip]
Remove "circular require considered harmful" warning
Upgrade to appraisal 1.0.2
Add `with_primary_key` to AssociationMatchers
Fix typo in have_many docs
Reorganize unit tests, part I

* Move spec/shoulda to spec/unit_tests/shoulda
* Move spec/support/*.rb to spec/support/unit_tests/{helpers,matchers}
* Move spec_helper.rb to unit_spec_helper.rb
Reorganize unit tests, part II

* Change 'spec' Rake task to 'spec:unit'
* Require unit_spec_helper.rb in unit tests, not spec_helper.rb
* Re-namespace files in spec/support/unit under UnitTests
* Files in spec/support/unit/helpers no longer automatically add
  themselves to RSpec - this happens in unit_spec_helper.rb
* Extract RecordWithDifferentErrorAttributeBuilder and
  RecordValidatingConfirmationBuilder to separate files
Add new RSpec acceptance tests to replace Cucumber
Remove Cucumber tests
Fix unit tests to use new acceptance stuff