Add support for AMReX derived overlapping AMR datasets in situ with Catalyst 2#

This change allows AMReX-based simulation codes to pass data to ParaView Catalyst 2.0 directly using a new Catalyst protocol amrmesh.

From an AMReX-based simulation code, one can use the AMReX function MultiLevelToBlueprint to produce a compliant Conduit Node.

void MultiLevelToBlueprint (int n_levels,
                            const Vector<const MultiFab*> &mfs,
                            const Vector<std::string> &varnames,
                            const Vector<Geometry> &geoms,
                            Real time_value,
                            const Vector<int> &level_steps,
                            const Vector<IntVect> &ref_ratio,
                            conduit::Node &bp_mesh);

This node can then be fed to a Catalyst Conduit node as the data leaf for a Catalyst channel with the type set to "amrmesh".

"catalyst": {
  "state": {/* ... */},
  "channels": {
    "mesh": {
      "type": "amrmesh",
      "data": "bp_mesh",
    }
  }
}

Catalyst will construct a vtkOverlappingAMR object from the described data in the Conduit Node.

A unit test has been added with a single rank with multiple AMR boxes. This code has been tested in parallel using the AMReX-based simulation code MFix-Exa, a CFD code, closed source at the time of writing.