[Active Record] Renamed private methods create_record and update_record

 This is to ensure that they are not accidentally called by the app code.
 They are renamed to _create_record and _update_record respectively.
 Closes #11645
Revise 'sqlite3:' URL handling for smoother upgrades

Restore the 4.0 behaviour for 'sqlite3:///', but deprecate it. We'll
change to the absolute-path interpretation in 4.2.

The current "correct" spellings for in-memory, relative, and absolute
URLs, respectively, are:

    sqlite3::memory:
    sqlite3:relative/path
    sqlite3:/full/path

Substantially reverses/defers fbb79b517f3127ba620fedd01849f9628b78d6ce.
Uncovered by @guilleiguaran while investigating #14495, though that
sounds like a different issue.
Complete change of `sqlite3:///` path handling

That which was now relative is now absolute.
CollectionProxy uses the arel of its association's scope.

CollectionProxy should be able to reuse the behavior (methods) of its parent class,
but with its own state. This change allows CollectionProxy to use the arel object
corresponding to its association's scope.
Fix error when using `with_options` with lambda.

It was causing error when using `with_options` passing a lambda as its
last argument.

    class User < ActiveRecord::Base
      with_options dependent: :destroy do |assoc|
        assoc.has_many :profiles, -> { where(active: true) }
      end
    end

It was happening because the `option_merger` was taking the last
argument and checking if it was a Hash. This breaks the HasMany usage,
because its last argument can be a Hash or a Proc.

As the behavior described in this test:
https://github.com/rails/rails/blob/master/activesupport/test/option_merger_test.rb#L69
the method will only accept the lambda, this way it will keep the expected behavior. See 9eaa0a34
Merge pull request #14569 from matthewd/sqlite_relative_deprecated

Revise 'sqlite3:' URL handling for smoother upgrades

Conflicts:
	activerecord/CHANGELOG.md
Explicitly load Kernel#y when starting a console

Previously, we relied on the IRB-detection in Psych itself. But that
doesn't work when we're running under spring: the application boots (and
thus psych is required) before we switch to console mode and load IRB.

Fixes #14587.
Merge pull request #14588 from matthewd/kernel_y_with_spring

Explicitly load Kernel#y when starting a console
Improve error message for guides:generate:kindle

With `kindlegen` missing from the PATH, the task
keeps suggesting to `gem install kindlerb`.
This change provides a more meaningful error
message for guides:generate:kindle.
Merge pull request #14590 from czak/improved_kindlerb_error_message

Improve error message for guides:generate:kindle
Merge pull request #14572 from laurocaetano/with_options_and_scope

Fix error when using `with_options` with lambda.

Conflicts:
	activerecord/CHANGELOG.md
Block a few default Class methods as scope name.

Add tests to make sure scopes cannot be create with names such as:
private, protected, public.
Make sure enum values don't collide with those methods too.
Merge pull request #14582 from arthurnn/blacklist_ruby_methods

Blacklist ruby keywords for scopes
Prevent state leak in test.

This will allow us to run the tests in random order.
PostgreSQL and SQLite, remove varchar limit. [Vladimir Sazhin & Toms Mikoss & Yves Senn]

There is no reason for the PG adapter to have a default limit of 255 on :string
columns. See this snippet from the PG docs:

    Tip: There is no performance difference among these three types, apart
    from increased storage space when using the blank-padded type, and a
    few extra CPU cycles to check the length when storing into a
    length-constrained column. While character(n) has performance
    advantages in some other database systems, there is no such advantage
    in PostgreSQL; in fact character(n) is usually the slowest of the
    three because of its additional storage costs. In most situations text
    or character varying should be used instead.
test, show current adapter behavior for `add_column limit: nil`.

This is an illustration of https://github.com/rails/rails/pull/13435#issuecomment-33789752
Removing the limit from the PG and SQLite adapter solves the issue.
MySQL is still affected by the issue.
Merge pull request #14593 from tgxworld/fix_postgresql_schema_test_random_order

Prevent state leak in test.
Ensure we supply Kernel#y for 1.9 too

In 1.9, it doesn't live in its own file, so we'll have to define it
ourselves.

Check RUBY_VERSION, instead of rescuing the require, because we want
this to break if `psych/y` moves in a future Ruby release.
Merge pull request #14597 from matthewd/kernel_y_for_1_9_option_1

Ensure we supply Kernel#y for 1.9 too
Active support instead of ActiveSupport::Deprecation.silence we can use assert_deprecated