Attempt to fix issues related to encoding of values in HTTP headers when...

... the header contains unicode values. Attempts to fix #1839, #1829, #1828, #702.

This changes the way we encode the headers to hopefully leave a bunch of "normal" characters alone and only encoding certain symbols and non-ascii characters. It adds a test to show how it works using some of the examples from the issues linked above.

I still think that we shouldn't be mutating headers in place, but this proposed fix is less intrusive to the codebase and hopefully fixes the issue for most. All tests that currently pass continue to pass with this change.

@toastdriven, @rajivm, @lucastan: any thoughts?