proper-encode-uri RFC3986 and RFC5987 compliant ES6 rewrite of the encodeURI and encodeURIComponent functions. Works in all modern browsers including IE11.