adds base64 decoding (fixes #5656)

fixes #5656
I've not really looked at the code, but wouldn't using an array be much more efficient here? You could convert the character to an `Int` and directly index into the array, with a few `if` to transform the codepoint of the character into a position in the array (i.e. one condition for upper-case letters, one for lower-case letters, one for digits, and one for + and /).