[Fixes #11512] improves cache size calculation in ActiveSupport::Cache::MemoryStore

Previously, the cache size of `ActiveSupport::Cache::MemoryStore` was calculated
as the sum of the size of its entries, ignoring the size of keys and any data
structure overhead. This could lead to the calculated cache size sometimes being
10-100x smaller than the memory used, e.g., in the case of small values.

The size of a key/entry pair is now calculated via `#cached_size`:

    def cached_size(key, entry)
      key.to_s.bytesize + entry.size + PER_ENTRY_OVERHEAD
    end

The value of `PER_ENTRY_OVERHEAD` is 240 bytes based on an [empirical
estimation](https://gist.github.com/ssimeonov/6047200) for 64-bit MRI on
1.9.3 and 2.0.

Fixes GH#11512 https://github.com/rails/rails/issues/11512
Merge pull request #11546 from swoop-inc/ss_memory_store_cache_size

[Fixes #11512] improves cache size calculation in MemoryStore
Revert "Match Dev/Prod parity for Index Page"

Showing welcome page in production can expose information, which should
not be visible on production if people don't override the default root
route.

This reverts commit b0caea29c2da9f4c8bb958019813482da297067d.
Add info about placing a new CHANGELOG entry to contributing guide
Move #11546 changelog to the top [ci skip]
Defines the return type of select / select_all method.
Added some usage about ActiveRecord::Result [ci skip]
Merge pull request #11461 from kennyj/fix_11454

Fixes #11454 . We should define the return type of select_all method clearly.
Fix changelog syntax and use Ruby 1.9 hash style [ci skip]
Use merge! to avoid a new hash and change some spots to 1.9 hash style
Leave the knowledge of boolean tag values to content tag

content tag already knows which tags are boolean and the values that
should generate them when a truthy value is passed, so leave this logic
for it instead of duplicating when generating options tags.
Uses mysql2 0.3.13 or later
Merge pull request #11558 from kennyj/bump_mysql2_to_0_3_13

Uses mysql2 0.3.13 or later.
decouple extensions from association object state
extend by adding relationships rather than monkey patching
only flatten one side
remove unnecessary reader
AR::Base does not need to know how to create reflection objects
Stop reading the same file twice for testing different content

assert_file already gives this functionality for free by passing
multiple contents.
use the predicate method