Allow additional arguments to be used during type map lookups

Determining things like precision and scale in postgresql will require
the given blocks to take additional arguments besides the OID.

- Adds the ability to handle additional arguments to `TypeMap`
- Passes the column type to blocks when looking up PG types
Use the generic type map for all PG type registrations

We're going to want all of the benefits of the type map object for
registrations, including block registration and real aliasing. Moves
type name registrations to the adapter, and aliases the OIDs to the
named types
Merge pull request #15248 from sgrif/sg-additional-type-map-args

Allow additional arguments to be used during type map lookups
Merge pull request #15249 from sgrif/sg-register-types-in-adapter

Use the generic type map for all PG type registrations
Merge pull request #15247 from DNNX/activesupport-formatter-refactoring

Use `break` instead of `next` in AD::Journey::Formatter#match_route
Remove unnecessary `Hash#to_a` call

Inspired by https://github.com/rails/rails/commit/931ee4186b877856b212b0085cd7bd7f6a4aea67

```ruby

def stat(num)
  start = GC.stat(:total_allocated_object)
  num.times { yield }
  total_obj_count = GC.stat(:total_allocated_object) - start
  puts "#{total_obj_count / num} allocations per call"
end

h = { 'x' => 'y' }

stat(100) { h.     each { |pair| pair } }
stat(100) { h.to_a.each { |pair| pair } }

__END__
1 allocations per call
2 allocations per call
```
Rename `stack` to `queue`

Because it is used as a queue (FIFO), not as a stack (LIFO).

* http://en.wikipedia.org/wiki/Stack_(abstract_data_type)
* http://en.wikipedia.org/wiki/Queue_(data_structure)
Merge pull request #15252 from DNNX/formatter-refactoring-2

Remove unnecessary `Hash#to_a` call
Move `extract_precision` onto type objects
Merge pull request #15239 from croaky/dc-sg-move-extract-precision-to-types

Move `extract_precision` onto type objects
Push scale to type objects

Ideally types will be usable without having to specify a sql type
string, so we should keep the information related to parsing them on the
adapter or another object.
Merge pull request #15254 from DNNX/formatter-refactoring-3

Rename `stack` to `queue`
Merge pull request #15250 from sgrif/sg-push-scale-to-types

Push scale to type objects
Push precision to type objects
Removed not-used code
Merge pull request #15256 from sgrif/sg-push-precision-to-types

Push precision to type objects
Fixes URL generation with trailing_slash: true

URL generation with trailing_slash: true was adding a trailing slash
after .:format

    Routes.draw do
      resources :bars
    end

    bars_url(trailing_slash: true, format: 'json')
      # => /bars.json/

This commit removes that extra trailing slash
Push limit to type objects

Columns and injected types no longer have any conditionals based on the
format of SQL type strings! Hooray!
Merge pull request #15259 from sgrif/sg-push-limit-to-types

Push limit to type objects
Don't recurse infinitely when calling non-existent method on super