Switch from `btoa`/`atob` to custom serializer
atob and btoa are unable to serialize non-ASCII characters leading to a serialization error for anything from non-Latin usernames to non-Latin page names. This commit introduces serialize and deserialize which performs URL percent encoding prior to any form of Base64 conversion, forcing all non-ASCII characters to be converted into ASCII and thus avoiding the limitation of atob/btoa.
Assesed no carried-over impacts to UV, atob/btoa conversion seems to happen only prior to inter-window broadcasts.