Communicate paths to/from servers as base64

It's possible for users to attempt to begin transfers using files whose
names contain non-Unicode, non-ASCII characters. Since communication
to/from the storage service and between the dashboard and JS frontend
occurs via JSON responses, which mandates Unicode, it's necessary to
find an alternate way to represent paths.

This moves to communicate paths back and forth in base64 encoding, and
vendors a JS base64 library to let the UI decode and encode paths as
appropriate.

refs #6067
Treat paths as binary blobs, not unicode strings

Since paths can contain any arbitrary characters, and are essentially
treated on-disk as binary, Archivematica needs to treat these as
binary strings that could contain any arbitrary characters.

This alters several database fields to be binary types, alters several
bits of intenral code so that paths are always treated as str types
instead of unicode strings, and fixes up a few existing bits of string
decoding to ensure they can cope with non-unicode strings (at the cost
of potentially creating mojibake).

refs #6067
clamscan script: adjust string escaping
Use v2 storage service API
Move base64 to js/vendor directory
createMETS: use archivematicaFunctions.escape
restructureForCompliance: comment string casts
ingest/views: use archivematicaFunctions.escape
main/views: use archivematicaFunctions.escape