Allow to unscope where conditions using `arel_table` with Symbol

This commit fixes the following case.

    User.where(User.arel_table[:created_at].lteq(1.year.ago)).unscope(where :created_at)
Refactor `PredicateBuilder` from singleton to instance
Fix typo [ci skip]
Merge pull request #17881 from deeeki/unscope_arel_where

Allow to unscope where conditions by arel_table with symbol
Action View is needed for DebugExceptions

We should remove this dependency later.
Merge pull request #17886 from mrgilman/refactor-predicate-builder

Refactor `PredicateBuilder` from singleton to instance
Refactor `build_from_hash` to convert dot notation to hash first

This ensures that we're handling all forms of nested tables the same way.

We're aware that the `convert_dot_notation_to_hash` method will cause a
performance hit, and we intend to come back to it once we've refactored some of
the surrounding code.

[Melissa Xie & Melanie Gilman]
require 'rake' before requiring Rake tasks

Without this,
% rails r "require 'rails/tasks'"
would cause a NoMethodError: undefined method `desc' for main:Object
Merge pull request #17888 from mrgilman/dot-notation

Refactor `build_from_hash` to convert dot notation to hash first
Require missing association in test
Fix "nonexistent" typo in tests
Merge pull request #17889 from mxie/mx-fix-nonexistent-typo

Fix "nonexistent" typo in tests