Adds encodeURI and decodeURI

Notes: This PR doesn't account for surrogate pairs. 
Node's `decodeURI` has the interesting property that it won't unescape characters that `encodeURI` wouldn't escape:

```
> decodeURI('%24')
'%24'
> decodeURIComponent('%24')
'$'
```