Fix AR#method_missing re-dispatching into overwritten attribute methods.

This was happening when a `super` call in an overwritten attribute method
was triggering a method_missing fallback, because attribute methods
haven't been generated yet.

  class Topic < ActiveRecord::Base
    def title
      # `super` would re-invoke this method if define_attribute_methods
      # hasn't been called yet resulting in double '!' appending
      super + '!'
    end
  end
optimize string literals in erb templates
Install Spring preloader when generating new applications
Action Pack Variants

By default, variants in the templates will be picked up if a variant is set
and there's a match. The format will be:

  app/views/projects/show.html.erb
  app/views/projects/show.html+tablet.erb
  app/views/projects/show.html+phone.erb

If request.variant = :tablet is set, we'll automatically be rendering the
html+tablet template.

In the controller, we can also tailer to the variants with this syntax:

  class ProjectsController < ActionController::Base
    def show
      respond_to do |format|
        format.html do |html|
          @stars = @project.stars

          html.tablet { @notifications = @project.notifications }
          html.phone  { @chat_heads    = @project.chat_heads }
        end

        format.js
        format.atom
      end
    end
  end

The variant itself is nil by default, but can be set in before filters, like
so:

  class ApplicationController < ActionController::Base
    before_action do
      if request.user_agent =~ /iPad/
        request.variant = :tablet
      end
    end
  end

This is modeled loosely on custom mime types, but it's specifically not
intended to be used together. If you're going to make a custom mime type,
you don't need a variant. Variants are for variations on a single mime
types.
Add variants to release notes
Merge pull request #12977 from strzalek/action-pack-variants

Action Pack Variants
Add nodoc to added VariantFilter class
Backfilled CHANGELOG for AS::JSON::Variable removal (6f3e01e8) [ci skip]
Added JSON release notes [ci skip]
Improve a couple exception messages related to variants and mime types

Avoid one-liner conditionals when they are too big. Avoid concatenating
strings to build error messages. Improve messages a bit.
Merge pull request #13109 from chancancode/json_guides

Added JSON related items to the 4.1 release notes
minor 4_1_release_notes changes. [ci skip]
Merge pull request #12958 from jonleighton/spring

Install Spring preloader when generating new applications
add Spring as major feature in the 4.1 release notes. [ci skip]

Follow up to #12958.
remove variants paragraph indent in release notes. [ci skip]
Fix documentation of number_to_currency helper

Now users have to explicit mark the unit as safe if they trust it.

Closes #13161

Conflicts:
	actionpack/lib/action_view/helpers/number_helper.rb
	actionpack/test/template/number_helper_i18n_test.rb
Merge pull request #12403 from thedarkone/attr-method-missing-fix

Fix AR#method_missing re-dispatching into overwritten attribute methods

Conflicts:
	activerecord/lib/active_record/attribute_methods.rb
Fix issue where TextHelper#simple_format was calling missing 'raw' method
Merge pull request #13152 from mariovisic/text_helper_missing_raw_method

TextHelper#simple_format attempts to call undefined raw method
Formatting, capitalization, and punctuation fixes [ci skip]

Second try on this commit.