shoulda-matchers spring compatibility.

Changed Gemfile and spec_helper according to the shoulda-matchers
documentation:

Gemfile:

group :test do
  gem 'shoulda-matchers', require: false
end

spec_helper:

require 'rspec/rails'
require 'shoulda/matchers'u
Connect to Postgres on localhost

* Most installs listen on localhost
* Many installs do not listen on a socket
* This fixes connection errors for many users
Move SMTP variable settings out of initializer

Since we require the `smtp.rb` file in the environment files, and Rails loads it
as part of its boot process, this file was loaded twice. This causes a constant
reinitialization warning.

Also, to remove the duplicaton, there is no need to check the environment,
since we require the files from the appropriate environment files.

Fixes #335
Maintain ActiveRecord test schema

* Add ActiveRecord::Migration.maintain_test_schema! to rspec template
Unify Ruby version for gem and suspended apps

    One Ruby to rule them all, One Ruby to find them,
    One Ruby to bring them all and in the light bind them
    In the Land of .ruby-version where the Fluorescents lie.

When creating new apps, there is little reason to use an older version
of Ruby than the most recent. For most use cases, having the latest
version is going to be the best approach.

* Move Ruby version to .ruby-version for gem
* Read this file into Suspenders::RUBY_VERSION
* Use Suspenders::RUBY_VERSION everywhere we need it, such as the
* Gemfile and generated Travis config.
* Update README documentation about Ruby and Rails versions.
* Add color to Travis output.

This is based on a conversation with @derekprior and @mrgilman.
Escape Erb in secrets.yml

Fixes issue where `secret_key_base` in `config/secrets.yml` was blank,
missing `<%= ENV['SECRET_KEY_BASE'] %>`.

Fixes #340
Bump to 1.11.0
Create the .env file before running rake tasks.

In Rails apps which require an environment variable to be set in an
initializer, `rake dev:prime` will fail unless the `.env` file is put in
place first.
Ensure EMAIL_RECIPIENTS is set on staging

When the variable isn't set, mail deliveries will raise:

```
ArgumentError: An SMTP To address is required to send a message. Set the message
smtp_envelope_to, to, cc, or bcc address
```

I could cause head scratching, based on forgetting that staging intercepts
emails.
Add ActionMailer spec support file

Clears deliveries collection before each test
Include newrelic config file

* Fixes https://github.com/thoughtbot/suspenders/issues/287

Minor:

* Remove unused `download_file` method
* Add newline before spec expectations
Include `formulaic` gem

Useful for outside-in integration testing

* integrates nicely with `simple_form`
* encourages `I18n` from the get-go
* encourages cleaner `capybara` specs
Use PostgreSQL 9.3 on Travis CI

Heroku's default is Postgres 9.3 [1], but Travis' default is Postgres 9.1
[2]. This can occasionally cause problems which are difficult to debug.

[1]: https://devcenter.heroku.com/articles/heroku-postgresql#version-support
[2]: http://docs.travis-ci.com/user/using-postgresql/
Set up Segment.io by default

In order to analyze metrics later, we need to instrument our app to log
the right metrics. The primary type of instrumentation we care about is
called "event tracking."

We use Segment.io to capture events whenever possible. It is basically
the adapter pattern for analytics services.

Segment.io lets us drop one JS library into our web apps, or one Ruby
library into our server-side framework, or one iOS SDK into our mobile
apps. Then, we can toggle on and off different services such as Google
Analytics, Intercom, and others.

http://playbook.thoughtbot.com/#instrumentation

If we are working on an app that uses authentication through a library
such as Clearance, we should add the following to
`app/views/application/_analytics.html.erb`:

    <% if signed_in? %>
      <%= render 'signed_in_analytics' %>
    <% end %>

https://github.com/thoughtbot/clearance

At that time, we should also add
`app/views/application/_signed_in_analytics.html.erb`:

    <script type="text/javascript">
      analytics.identify("#{current_user.id}", {
        created : "#{current_user.created_at}",
        email : "#{current_user.email}"
      }, {
        Intercom : {
          userHash : "#{OpenSSL::HMAC.hexdigest('sha256',
    ENV['INTERCOM_API_SECRET'], current_user.id.to_s)}"
        }
      });
    </script>

The most likely first signed in service we'll want is Intercom. It plays
two important roles for an early stage product:

1. communication (and support) with customers and
2. measuring retention (such as Weekly Active Users)

https://intercom.io
Set up staging and production for CDN

The value of `ASSET_HOST` will look like `//global.prod.fastly.net`.

In production every asset has a hash added to its name. Whenever the
file changes, the browser requests the latest version as the hash and
therefore the whole filename changes.

Putting the assets version in an environment variable makes it possible
to invalidate the cache without a re-deploy, if necessary. Simply re-set
the `ASSETS_VERSION` as a Heroku config variable to change the hash
globally and make the browser request every asset again.

Stuff we already have in Suspenders that makes this all work:

Gemfile:

    gem 'coffee-rails'
    gem 'sass-rails'
    gem 'uglifier'

config/environments/{staging,production}.rb:

    config.assets.compile = false
    config.assets.digest = true
    config.assets.js_compressor = :uglifier

We don't have to set `config.serve_static_assets = true` because the
`rails_12factor` gem does it for us.

We recommend using Fastly for the CDN.

http://www.fastly.com/
Bump to 1.12.0
Raise unpermitted parameters in test environment

Unpermitted parameters were being raised in the development environment
but ignored in the test environment. That can cause specs to pass even
though performing the same steps in development will fail.

This change raises unpermitted parameters in all environments for
parity.