Reduce allocations when running AR callbacks.

Inspired by @tenderlove's work in
c363fff29f060e6a2effe1e4bb2c4dd4cd805d6e, this reduces the number of
strings allocated when running callbacks for ActiveRecord instances. I
measured that using this script:

```
require 'objspace'
require 'active_record'
require 'allocation_tracer'

ActiveRecord::Base.establish_connection adapter: "sqlite3",
                                        database: ":memory:"

ActiveRecord::Base.connection.instance_eval do
  create_table(:articles) { |t| t.string :name }
end

class Article < ActiveRecord::Base; end
a = Article.create name: "foo"
a = Article.find a.id

N = 10
result = ObjectSpace::AllocationTracer.trace do
  N.times { Article.find a.id }
end

result.sort.each do |k,v|
  p k => v
end
puts "total: #{result.values.map(&:first).inject(:+)}"
```

When I run this against master and this branch I get this output:

```
pete@balloon:~/projects/rails/activerecord$ git checkout master
M Gemfile
Switched to branch 'master'
pete@balloon:~/projects/rails/activerecord$ bundle exec ruby benchmark_allocation_with_callback_send.rb > allocations_before
pete@balloon:~/projects/rails/activerecord$ git checkout remove-dynamic-send-on-built-in-callbacks
M Gemfile
Switched to branch 'remove-dynamic-send-on-built-in-callbacks'
pete@balloon:~/projects/rails/activerecord$ bundle exec ruby benchmark_allocation_with_callback_send.rb > allocations_after
pete@balloon:~/projects/rails/activerecord$ diff allocations_before allocations_after
39d38
<
{["/home/pete/projects/rails/activesupport/lib/active_support/callbacks.rb",
81]=>[40, 0, 0, 0, 0, 0]}
42c41
< total: 630
---
> total: 590

```

In addition to this, there are two micro-optimizations present:

* Using `block.call if block` vs `yield if block_given?` when the block was being captured already.

```
pete@balloon:~/projects$ cat benchmark_block_call_vs_yield.rb
require 'benchmark/ips'

def block_capture_with_yield &block
  yield if block_given?
end

def block_capture_with_call &block
  block.call if block
end

def no_block_capture
  yield if block_given?
end

Benchmark.ips do |b|
  b.report("block_capture_with_yield") { block_capture_with_yield }
  b.report("block_capture_with_call") { block_capture_with_call }
  b.report("no_block_capture") { no_block_capture }
end
pete@balloon:~/projects$ ruby benchmark_block_call_vs_yield.rb
Calculating -------------------------------------
block_capture_with_yield
                        124979 i/100ms
block_capture_with_call
                        138340 i/100ms
    no_block_capture    136827 i/100ms
-------------------------------------------------
block_capture_with_yield
                      5703108.9 (±2.4%) i/s -   28495212 in   4.999368s
block_capture_with_call
                      6840730.5 (±3.6%) i/s -   34169980 in   5.002649s
    no_block_capture  5821141.4 (±2.8%) i/s -   29144151 in   5.010580s
```

* Defining and calling methods instead of using send.

```
pete@balloon:~/projects$ cat benchmark_method_call_vs_send.rb
require 'benchmark/ips'

class Foo
  def tacos
    nil
  end
end

my_foo = Foo.new

Benchmark.ips do |b|
  b.report('send') { my_foo.send('tacos') }
  b.report('call') { my_foo.tacos }
end
pete@balloon:~/projects$ ruby benchmark_method_call_vs_send.rb
Calculating -------------------------------------
                send     97736 i/100ms
                call    151142 i/100ms
-------------------------------------------------
                send  2683730.3 (±2.8%) i/s -   13487568 in   5.029763s
                call  8005963.9 (±2.7%) i/s -   40052630 in   5.006604s
```

The result of this is making typical ActiveRecord operations slightly faster:

https://gist.github.com/phiggins/e46e51dcc7edb45b5f98
Remove defunct ivars

@column_names_with_alias, @dynamic_methods_hash, @time_zone_column_names, and @cached_time_zone
Merge pull request #17092 from Empact/defunct-ivars

Remove defunct ivars
Use Hash#each_key instead of Hash#keys.each

Hash#keys.each allocates an array of keys; Hash#each_key iterates through the
keys without allocating a new array. This is the reason why Hash#each_key
exists.
Merge pull request #17086 from seuros/master

correct filename for jobs tests
Merge pull request #17099 from sferik/each_key

Use Hash#each_key instead of Hash#keys.each
Merge pull request #17093 from phiggins/remove-dynamic-send-on-built-in-callbacks

Reduce allocations when running AR callbacks.
Parse HTML as document fragment.

This is to match the changes in Rails Dom Testing rails/rails-dom-testing#20.
Merge pull request #17107 from kaspth/parse-html-as-fragments

Parse HTML as document fragment.
fixes typo in AS CHANGELOG [ci skip]

References f92ac24.
Responder was removed at ee77770d57de9da87b05a2fe84b9d46ec6852c62
Remove RUNNING UNIT TESTS from ActionPack

[ci skip]

Following discussion with @senny https://github.com/rails/rails/pull/17100#issuecomment-57285273
it only makes sense to keep this file form projects that require
extra instructions.
Merge pull request #17110 from claudiob/remove-running-tests

Remove RUNNING UNIT TESTS from ActionPack
Added processing of `nil` to `highlight` helper method
Refactor callback setup in to use lambda instead of eval
Update single table inheritance link anchor

The current one is old-of-date and doesn't make the browser navigation to the correct heading.
Merge pull request #17118 from zhangsu/patch-1

Update single table inheritance link anchor
Generate the application pointing to rails-dom-testing master

It is temporary until we do the final release
Merge pull request #17114 from pabloh/replace_use_of_eval_with_lambda

Refactor callback setup to use lambda instead of eval
Merge pull request #17113 from igor04/helpers-highlight

Added processing of `nil` to `highlight` helper method