[WIP] Collection option in route under resource

Still a WIP. Not yet ready for merge
@chrismccord @josevalim - when `add_route` is called it defines private match/4 functions on compile, right? Does that mean that `unquote(route.action)` will become a hardcoded `:show` when match/4 is defined? Meaning, line 267 will be: `opts = MyApp.UserController.init(:show)`?

I ask because when I run `mix test test/phoenix/router/resources_test.exs:152`, route.action's value changes in compile-time and in runtime. I'm expecting route.action to be `:favorites` and it is during compile-time but it becomes `:show` when I do `call(Router, :get, "users/1/comments/favorites")` in the test. 

Did I misunderstand how this works or is there something else that's changing the value of route.action?