= New Features

* A map_matcher plugin has been added, for matching the next segment
  in the request path to a hash key, yielding the hash value.  This
  allows for a better approach for metaprogramming routes.

  When dealing with many similar routes, it is common to use a hash
  keyed by route segment, and then match against an array of the keys:
    
    map = {
      'album' => Album,
      'artist' => Artist,
      # ...
    }.freeze
    
    keys = map.keys.freeze
    
    route do |r|
      r.on "type", keys do |key|
        value = map[key]
        # ...
      end
    end

  For large maps, this approach is suboptimal, since the array matcher
  will iterate over each element in the array, checking whether it
  matches.

  The map_matcher plugin allows for:
    
    plugin :map_matcher

    route do |r|
      r.on "type", map: map do |value|
        # ...
      end
    end
    
  This gets the next route segment and checks whether it is a key in 
  the map, instead of iterating over an array of hash keys, so it is
  more efficient for large maps. It also results in simpler code.
