For now, only one `pyodide` can be loaded in a given global scope because we need to use a global variable for package loading. This changes `loadPyodide` so that it no longer defines `globalThis.pyodide` in favor of just returning `pyodide` from `loadPyodide`. `Module` is placed on the global object as `globalThis.__pyodide_module` for the purposes of package loading. I added documentation to explicitly state that `loadPyodide` can only be run once in each global Javascript context, an error will be thrown otherwise.

This has two advantages: 
1. The returned `pyodide` module is understandable to Typescript and other code analysis, whereas the global variable is not understandable.
2. If in the future we are able to remove the global variable, no further API change will be needed (other than relaxing the documented "pyodide must be globally-unique" constraint). I figure it's better to make this API change earlier rather than later.

It will be possible to completely remove the global variable dependence when Firefox implements support for using ES6 modules in webworkers (see https://bugzilla.mozilla.org/show_bug.cgi?id=1247687).
API Don't expose pyodide as a global variable in loadPyodide. For now, only one `pyodide` can be loaded in a given global scope because we need to use a global variable for package loading. This changes `loadPyodide` so that it no longer defines `globalThis.pyodide` in favor of just returning `pyodide` from `loadPyodide`. `Module` is placed on the global object as `globalThis.__pyodide_module` for the purposes of package loading. I added documentation to explicitly state that `loadPyodide` can only be run once in each global Javascript context, an error will be thrown otherwise.

This has two advantages: 
1. The returned `pyodide` module is understandable to Typescript and other code analysis, whereas the global variable is not understandable.
2. If in the future we are able to remove the global variable, no further API change will be needed (other than relaxing the documented "pyodide must be globally-unique" constraint). I figure it's better to make this API change earlier rather than later.

It will be possible to completely remove the global variable dependence when Firefox implements support for using ES6 modules in webworkers (see https://bugzilla.mozilla.org/show_bug.cgi?id=1247687).
# This file gets copied into the Modules/ folder when building
# newlib configurations which do not support dynamic library
# loading.
#
# See build/Python-*/Modules/Setup for more details

*static*

array arraymodule.c	# array objects
math mathmodule.c _math.c # -lm # math library functions, e.g. sin()
cmath cmathmodule.c # complex math functions
_contextvars _contextvarsmodule.c
_struct _struct.c	# binary structure packing/unpacking
_random _randommodule.c	# Random number generator
_bisect _bisectmodule.c	# Bisection algorithms
_datetime _datetimemodule.c
_heapq _heapqmodule.c
_json _json.c
_csv _csv.c
unicodedata unicodedata.c
_pickle _pickle.c
parser parsermodule.c

_socket socketmodule.c
select selectmodule.c
_posixsubprocess _posixsubprocess.c
binascii binascii.c

zlib zlibmodule.c

pyexpat expat/xmlparse.c expat/xmlrole.c expat/xmltok.c pyexpat.c -I$(srcdir)/Modules/expat -DHAVE_EXPAT_CONFIG_H -DUSE_PYEXPAT_CAPI -DXML_POOR_ENTROPY

_sha1 sha1module.c
_sha256 sha256module.c
_sha512 sha512module.c
_sha3 _sha3/sha3module.c
_md5 md5module.c
_blake2 _blake2/blake2module.c _blake2/blake2b_impl.c _blake2/blake2s_impl.c

# If we put this directly in the next line, makesetup incorrectly views the
# line as a definition line, instead of specifying a module. We bypass this
# problem by defining an extra variable that contains the =, and this line is
# correctly viewed as a definition line. We need extra quotes to make gcc think
# we want to define MODULE_NAME to be the string "sqlite" instead of the
# abstract symbol sqlite.
SQLITEMODULENAME=MODULE_NAME=\'"sqlite"\'
_sqlite3 _sqlite/cache.c _sqlite/connection.c _sqlite/cursor.c _sqlite/microprotocols.c _sqlite/module.c _sqlite/prepare_protocol.c _sqlite/row.c _sqlite/statement.c _sqlite/util.c -D$(SQLITEMODULENAME) -lsqlite3
_crypt _cryptmodule.c
_bz2 _bz2module.c -lbz2

_queue _queuemodule.c

#future_builtins future_builtins.c

_multibytecodec cjkcodecs/multibytecodec.c

_codecs_cn cjkcodecs/_codecs_cn.c
_codecs_hk cjkcodecs/_codecs_hk.c
_codecs_iso2022 cjkcodecs/_codecs_iso2022.c
_codecs_jp cjkcodecs/_codecs_jp.c
_codecs_kr cjkcodecs/_codecs_kr.c
_codecs_tw cjkcodecs/_codecs_tw.c

_lsprof _lsprof.c rotatingtree.c

_decimal _decimal/_decimal.c _decimal/libmpdec/basearith.c _decimal/libmpdec/constants.c _decimal/libmpdec/context.c _decimal/libmpdec/convolute.c _decimal/libmpdec/crt.c _decimal/libmpdec/difradix2.c _decimal/libmpdec/fnt.c _decimal/libmpdec/fourstep.c _decimal/libmpdec/io.c _decimal/libmpdec/memory.c _decimal/libmpdec/mpdecimal.c _decimal/libmpdec/numbertheory.c _decimal/libmpdec/sixstep.c _decimal/libmpdec/transpose.c -I$(srcdir)/Modules/_decimal/libmpdec
mmap mmapmodule.c

# This file gets copied into the Modules/ folder when building
# newlib configurations which do not support dynamic library
# loading.
#
# See build/Python-*/Modules/Setup for more details

*static*

array arraymodule.c	# array objects
math mathmodule.c _math.c # -lm # math library functions, e.g. sin()
cmath cmathmodule.c # complex math functions
_contextvars _contextvarsmodule.c
_struct _struct.c	# binary structure packing/unpacking
_random _randommodule.c	# Random number generator
_bisect _bisectmodule.c	# Bisection algorithms
_datetime _datetimemodule.c
_heapq _heapqmodule.c
_json _json.c
_csv _csv.c
unicodedata unicodedata.c
_pickle _pickle.c
parser parsermodule.c

_socket socketmodule.c
select selectmodule.c
_posixsubprocess _posixsubprocess.c
binascii binascii.c

zlib zlibmodule.c

pyexpat expat/xmlparse.c expat/xmlrole.c expat/xmltok.c pyexpat.c -I$(srcdir)/Modules/expat -DHAVE_EXPAT_CONFIG_H -DUSE_PYEXPAT_CAPI -DXML_POOR_ENTROPY

_sha1 sha1module.c
_sha256 sha256module.c
_sha512 sha512module.c
_sha3 _sha3/sha3module.c
_md5 md5module.c
_blake2 _blake2/blake2module.c _blake2/blake2b_impl.c _blake2/blake2s_impl.c

# If we put this directly in the next line, makesetup incorrectly views the
# line as a definition line, instead of specifying a module. We bypass this
# problem by defining an extra variable that contains the =, and this line is
# correctly viewed as a definition line. We need extra quotes to make gcc think
# we want to define MODULE_NAME to be the string "sqlite" instead of the
# abstract symbol sqlite.
SQLITEMODULENAME=MODULE_NAME=\'"sqlite"\'
_sqlite3 _sqlite/cache.c _sqlite/connection.c _sqlite/cursor.c _sqlite/microprotocols.c _sqlite/module.c _sqlite/prepare_protocol.c _sqlite/row.c _sqlite/statement.c _sqlite/util.c -D$(SQLITEMODULENAME) -lsqlite3
_crypt _cryptmodule.c
_bz2 _bz2module.c -lbz2

_queue _queuemodule.c

#future_builtins future_builtins.c

_multibytecodec cjkcodecs/multibytecodec.c

_codecs_cn cjkcodecs/_codecs_cn.c
_codecs_hk cjkcodecs/_codecs_hk.c
_codecs_iso2022 cjkcodecs/_codecs_iso2022.c
_codecs_jp cjkcodecs/_codecs_jp.c
_codecs_kr cjkcodecs/_codecs_kr.c
_codecs_tw cjkcodecs/_codecs_tw.c

_lsprof _lsprof.c rotatingtree.c

_decimal _decimal/_decimal.c _decimal/libmpdec/basearith.c _decimal/libmpdec/constants.c _decimal/libmpdec/context.c _decimal/libmpdec/convolute.c _decimal/libmpdec/crt.c _decimal/libmpdec/difradix2.c _decimal/libmpdec/fnt.c _decimal/libmpdec/fourstep.c _decimal/libmpdec/io.c _decimal/libmpdec/memory.c _decimal/libmpdec/mpdecimal.c _decimal/libmpdec/numbertheory.c _decimal/libmpdec/sixstep.c _decimal/libmpdec/transpose.c -I$(srcdir)/Modules/_decimal/libmpdec
mmap mmapmodule.c
