Handling for reserved Python keywords as JsProxy attrs. Resolves #3615. Things like `from` and `finally` are reserved keywords in Python and so `a.finally` 
is a `SyntaxError`. This automatically reroutes `a.from_` on a `JsProxy` to refer to `a.from` so it
can be used reasonably conveniently from Python.

### Checklists

- [x] Add a [CHANGELOG](https://github.com/pyodide/pyodide/blob/main/docs/project/changelog.md) entry
- [x] Add / update tests
- [x] Add new / update outdated documentation

from pytest_pyodide import run_in_pyodide


@run_in_pyodide(packages=["fpcast-test"])
def test_fpcasts(selenium):
    import fpcast_test

    fpcast_test.noargs0()
    fpcast_test.noargs1()
    fpcast_test.noargs2()
    fpcast_test.noargs3()

    fpcast_test.varargs0()
    fpcast_test.varargs1()
    fpcast_test.varargs2()
    fpcast_test.varargs3()

    fpcast_test.kwargs0()
    fpcast_test.kwargs1()
    fpcast_test.kwargs2()
    fpcast_test.kwargs3()

    fpcast_test.Callable0()()
    fpcast_test.Callable1()()
    fpcast_test.Callable2()()
    fpcast_test.Callable3()()

    t = fpcast_test.TestType()
    t.noargs0()
    t.noargs1()
    t.noargs2()
    t.noargs3()

    t.varargs0()
    t.varargs1()
    t.varargs2()
    t.varargs3()

    t.kwargs0()
    t.kwargs1()
    t.kwargs2()
    t.kwargs3()

    t.getset0
    t.getset1
    t.getset1 = 5

from pytest_pyodide import run_in_pyodide


@run_in_pyodide(packages=["fpcast-test"])
def test_fpcasts(selenium):
    import fpcast_test

    fpcast_test.noargs0()
    fpcast_test.noargs1()
    fpcast_test.noargs2()
    fpcast_test.noargs3()

    fpcast_test.varargs0()
    fpcast_test.varargs1()
    fpcast_test.varargs2()
    fpcast_test.varargs3()

    fpcast_test.kwargs0()
    fpcast_test.kwargs1()
    fpcast_test.kwargs2()
    fpcast_test.kwargs3()

    fpcast_test.Callable0()()
    fpcast_test.Callable1()()
    fpcast_test.Callable2()()
    fpcast_test.Callable3()()

    t = fpcast_test.TestType()
    t.noargs0()
    t.noargs1()
    t.noargs2()
    t.noargs3()

    t.varargs0()
    t.varargs1()
    t.varargs2()
    t.varargs3()

    t.kwargs0()
    t.kwargs1()
    t.kwargs2()
    t.kwargs3()

    t.getset0
    t.getset1
    t.getset1 = 5
