refactor Phoenix.Router.Path.build_url to take a keyword list as it's third arg

When working on #150 I noticed that, based on the way Phoenix.Router.Path.build_url is written, there would be no way to add an optional port. It takes 3 arguments, and the third is an optional string.

This PR converts that third argument to a keyword list, which makes it possible to to pass port and scheme to `%URI{}`. It'd also make it easy add other URI parameters in the future, like query strings.