This PR does two things:

1. I moved `package.json` into the root directory. Why? We are using `npx` from the `Makefile` which is executing usually under the root directory. If we install `node_modules` in `src/js` then these invocations don't see `node_modules` and install an extra copy of the packages. So we want `node_modules` in the root directory. node wants to put `node_modules` in the same directory as `package.json` hence I moved `package.json`. I also updated the build rules so that any recipe that uses `npx` has a dependency on `node_modules/.installed`.
2. We invoke `file_packager.py` from both the Makefile (in two places) and from `build_pkg`. There has been some drift in which options are applied in the two places. I extracted the common options and the task of locating the `file_packager.py` script into `tools/file_packager.sh`. I also shortened the make rules for `distutils.data` and `test.data` and made some minor updates to the dev docs about `file_packager.py`.
MAINT Improvements to node and file_packager invocations. This PR does two things:

1. I moved `package.json` into the root directory. Why? We are using `npx` from the `Makefile` which is executing usually under the root directory. If we install `node_modules` in `src/js` then these invocations don't see `node_modules` and install an extra copy of the packages. So we want `node_modules` in the root directory. node wants to put `node_modules` in the same directory as `package.json` hence I moved `package.json`. I also updated the build rules so that any recipe that uses `npx` has a dependency on `node_modules/.installed`.
2. We invoke `file_packager.py` from both the Makefile (in two places) and from `build_pkg`. There has been some drift in which options are applied in the two places. I extracted the common options and the task of locating the `file_packager.py` script into `tools/file_packager.sh`. I also shortened the make rules for `distutils.data` and `test.data` and made some minor updates to the dev docs about `file_packager.py`.
# Pyodide Python compatibility


## Python Standard library

Most of the Python standard library is functional, except for the modules
listed in the sections below. A large part of the CPython test suite passes except for
tests skipped in
[`src/tests/python_tests.txt`](https://github.com/pyodide/pyodide/blob/main/src/tests/python_tests.txt)
or via [patches](https://github.com/pyodide/pyodide/tree/main/cpython/patches).

### Optional modules

The following stdlib modules are included by default, however
they can be excluded with `loadPyodide({..., fullStdLib = false })`.
Individual modules can then be loaded as necessary using
{any}`pyodide.loadPackage`,

 - distutils
 - test: it is an exception to the above, since it is excluded by default.

### Removed modules

The following modules are removed from the standard library to reduce download size and
since they currently wouldn't work in the WebAssembly VM,

 - ctypes
 - curses
 - dbm
 - ensurepip
 - idlelib
 - lib2to3
 - tkinter
 - turtle.py
 - turtledemo
 - venv
 - webbrowser.py

### Included but not working modules

The following modules can be imported, but are not functional due to the limitations of the WebAssembly VM:
 - multiprocessing
 - threading
 - sockets

as well as any functionality that requires these.

# Pyodide Python compatibility


## Python Standard library

Most of the Python standard library is functional, except for the modules
listed in the sections below. A large part of the CPython test suite passes except for
tests skipped in
[`src/tests/python_tests.txt`](https://github.com/pyodide/pyodide/blob/main/src/tests/python_tests.txt)
or via [patches](https://github.com/pyodide/pyodide/tree/main/cpython/patches).

### Optional modules

The following stdlib modules are included by default, however
they can be excluded with `loadPyodide({..., fullStdLib = false })`.
Individual modules can then be loaded as necessary using
{any}`pyodide.loadPackage`,

 - distutils
 - test: it is an exception to the above, since it is excluded by default.

### Removed modules

The following modules are removed from the standard library to reduce download size and
since they currently wouldn't work in the WebAssembly VM,

 - ctypes
 - curses
 - dbm
 - ensurepip
 - idlelib
 - lib2to3
 - tkinter
 - turtle.py
 - turtledemo
 - venv
 - webbrowser.py

### Included but not working modules

The following modules can be imported, but are not functional due to the limitations of the WebAssembly VM:
 - multiprocessing
 - threading
 - sockets

as well as any functionality that requires these.
