Adding support for encoding Unicode Astral characters included in Uri parts

I've updated the URL encoding algorithm so that it iterates over code points (ints) instead of code units (chars). This means that characters in the Basic Multilingual Plane are encoded just fine (http://codepoints.net/basic_multilingual_plane), but characters outside of the BMP are always incorrectly encoded as %3F%3F.