Adds encodeURI and decodeURI

Notes: This PR doesn't account for surrogate pairs. 
The set of characters here is wrong. See [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI)

```
> encodeURI("-_.!~*'();,/?:@&=+$")
'-_.!~*\'();,/?:@&=+$'
> encodeURI(" %")
'%20%25'
```