Really URL encode and decode strings

The old way doesn't create URL-safe strings, if characters such as `&` or `/` or `:` appear, which makes the methods useless to parse URL query params.

As you can see I've updated them so that the old `NSxxxStringEncoding` constants would still be valid, even though `Foundation` uses different constants - they get automatically converted.