Base64url decode

new formats include the numbers being base64 encoded, likely to save
bytes. They were being created with .toBase64URL(), which also
url-encodes them. Seems sensible.

On deserializing, the numbers are run through fromBase64(). If native
bigint exists, then fromBase64 is replaced to use Buffer(n, 'base64'),
which correctly url decodes it as well. If it doesn't exist, like on
windows or in the browser, then window.atob is used. It doesn't know
about urlencoded values.

This patch urldecodes the string before passing it to window.atob.