Dashboard: replace Base64 with atob/btoa

The current JavaScript-based base64-encoding library we're using in
Archivematica and the storage service mishandles certain Unicode
codepoints. This corrupts certain strings when decoding/encoding, and
makes it impossible to roundtrip all data. For example:

	Base64.decode("8J+Yhy3wn5iP") // => "ߘ筰", not "😇-😏"

This replaces the vendored Base64 library with thin wrappers around the
native JavaScript atob/btoa functions. Those functions are available in
Firefox, Chrome, Safari, and Internet Explorer 10+.

Fixes #7698.
MCPClient: Remove DashboardSettings dependency

Giving the MCPClient access to the dashboard UUID via replacement dict
& environment variable was a branch of code development that was not
followed up on. Remove it to reduce table dependencies of the MCPClient.
Models: Update to match SQL

refs #7303
MCPServer: replace databaseInterface with django models
Unit classes: move some methods into superclass

Also switch from databaseInterface to Django models.

refs #7137.
databaseFunctions: use Django models

refs #7137
fileOperations: use Django models

refs #7137
elasticSearchFunctions: use Django models

refs #7137
storageService: use Django models

refs #7137
backlogUpdatingTransferFileIndex: remove unused functions
MCPClient: use Django models

refs #7137
jobChainLink: print to stderr, don't print stderr
localDevSetup: replace databaseInterface with Django models
identifyFileFormat: file_.sip won't raise
createSIPfromTransferObjects: fix subsequent runs

If this script runs more than once, the SIP objects directory will
already be populated with some files. Make sure the contents of
objects/ is a directory before trying to list its contents, otherwise
this will fail.
dicts: don't try to expand path if sipdir not defined
insertIntoDerivations: source and derived files are mandatory
databaseFunctions: add docstrings
databaseFunctions: add tests
main.models: add FilesIDs model