Add hereditary option to as_object_map. This automatically apply as_object_map to the values of the map when the values are "plain old objects".

This behavior is slightly naive but I think it will satisfy most people who have requested this feature.


- [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

<!-- Bootstrap HTML for running the unit tests. -->
<!doctype html>
<html>
  <head>
    <script type="text/javascript">
      window.logs = [];
      console.log = function (message) {
        window.logs.push(message);
      };
      console.warn = function (message) {
        window.logs.push(message);
      };
      console.info = function (message) {
        window.logs.push(message);
      };
      console.error = function (message) {
        window.logs.push(message);
      };
    </script>
    <script type="module">
      import "./pyodide.asm.js";
      import { loadPyodide } from "./pyodide.mjs";
      window.loadPyodide = loadPyodide;
    </script>
  </head>
  <body></body>
</html>

<!-- Bootstrap HTML for running the unit tests. -->
<!doctype html>
<html>
  <head>
    <script type="text/javascript">
      window.logs = [];
      console.log = function (message) {
        window.logs.push(message);
      };
      console.warn = function (message) {
        window.logs.push(message);
      };
      console.info = function (message) {
        window.logs.push(message);
      };
      console.error = function (message) {
        window.logs.push(message);
      };
    </script>
    <script type="module">
      import "./pyodide.asm.js";
      import { loadPyodide } from "./pyodide.mjs";
      window.loadPyodide = loadPyodide;
    </script>
  </head>
  <body></body>
</html>
