make Hash#extract! more symmetric with Hash#slice
add more testcases and doc about Hash#extract!
Move the TestQueue tests to the proper file
ActiveSupport::SynchronousQueue doesn't have the drain method.

Now we are using teh SynchronousQueue in the test environment instead of
the TestQueue
Split asset url helpers into seperate AssetUrlHelper
Merge pull request #7923 from josh/seperate-asset-tag-and-url-concerns

Split asset url helpers into seperate AssetUrlHelper
trailling whitespace cleanup in query_methods.rb
Merge pull request #7926 from senny/whitespace_cleanup

trailling whitespace cleanup in query_methods.rb [ci skip] 
Merge pull request #7007 from Mik-die/hash_extract

make Hash#extract! more symmetric with Hash#slice
Prompt to run rake when accidentally typed rails

Developers from all levels will accidentally run rake tasks using the `rails` keyword when they meant to use `rake`. Often times beginners struggle with the difference between the tools. The most common example would be `$ rails db:migrate`

Rather than telling the developer simply that they did not use a valid rails command, we can see if it was a valid rake command first. If it is a valid rake command we can auto execute it giving the user a period of time to cancel if that isn't what they intended.

Here is what `rake db:migrate` would look like if you cancel the command:


```sh
$ rails db:migrate
Assuming you meant: $ rake db:migrate 
press any key to cancel in 3 seconds
> 
command terminated ...
```

Here is what it looks like if you don't cancel the command:

```sh
$ rails db:migrate
Assuming you meant: $ rake db:migrate 
press any key to cancel in 3 seconds
> 
Running: $ rake db:migrate 
==  Foo: migrating ============================================================
==  Foo: migrated (0.0000s) ===================================================
```
Speed up relation merging by reducing calls to Array#-

before:

Calculating -------------------------------------
                  ar        83 i/100ms
-------------------------------------------------
                  ar      832.1 (±4.0%) i/s -       4233 in   5.096611s

after:

Calculating -------------------------------------
                  ar        87 i/100ms
-------------------------------------------------
                  ar      839.0 (±9.3%) i/s -       4176 in   5.032782s

Benchmark:

require 'config/environment'
require 'benchmark/ips'

GC.disable

unless User.find_by_login('tater')
  u = User.new
  u.login = 'tater'
  u.save!
end

def active_record
  user = User.find_by_login('tater')
  starred = user.starred_items.count
end

active_record

Benchmark.ips do |x|
  x.report("ar") { active_record }
end
performance improvements to joins!

Before:

Calculating -------------------------------------
                  ar        87 i/100ms
-------------------------------------------------
                  ar      823.4 (±11.8%) i/s -       4089 in   5.070234s

After:

Calculating -------------------------------------
                  ar        88 i/100ms
-------------------------------------------------
                  ar      894.1 (±3.9%) i/s -       4488 in   5.028161s

Same test as 3a6dfca7f5f5bd45cea2f6ac348178e72423e1d5
Merge pull request #7891 from schneems/schneems/rake_command_warning

Prompt to run rake when accidentally typed rails
Remove the queue container. Premature consolidation. Set up and maintain queues in the classes that use them instead.
Tighten up asset precompile tests
Backpedal from class-oriented config.queue. Set an actual queue instance.
Test that a Rails.queue consumer is automatically started in production
Replace double quotes with single quotes
Merge pull request #7935 from leereilly/minor-gemfile-twerk

Clean up Gemfile entry (replace double quotes with single quotes) [ci skip]