Remove a println

Not getting rid of the final one yet
Move Extract into the route-impl package

It's an implementation detail but has to be public because it shows
up in generated code.
Make the macro responsibile for setting priorities

I don't like this because it's not referentially transparent.  In
particular:
  val r1 = Route[Symbol]("/a") { () => 'r1 }
  val r2 = Route[Symbol]("/{String}") { s:String => 'r2 }
  val r = r1 merge r2
means something different when processing List("a") than
  val r2 = Route[Symbol]("/{String}") { s:String => 'r2 }
  val r1 = Route[Symbol]("/a") { () => 'r1 }
  val r = r1 merge r2
In the first case, List("a") will return 'r2; in the latter it will
return 'r1.

I would very much prefer it if this were handled as "second at the merge
wins" but I'm not yet quite sure how to do that efficiently.