Use bytes.Buffer instead of concatenation.

This seemed like a promising improvement on paper but benchmarks currently included in the uritemplates_test.go show no significant differences so I'm submitting this pull request as a request for comments.