### Description

This feature was inspired by a request from a services customer. They have existing data composed of Uber H3 encoded fields. This is not because they use Elasticsearch H3 capabilities, but something they already had. In addition they want to display the cell polygons on their map UI, and are willing to re-index, but do not want to export, process and re-import the data themselves to add the missing polygons.

The idea with this feature is to produce an ingest processor that can be added to elasticsearch as a plugin, and this processor will be able to convert any geotile address (geohash, geotile or geohex) into a polygon, for future use (either in a map display, or some other use, like polygon search or aggs). In the case of geohex, we already have the internal `H3.h3ToGeoBoundary` function, which is not accessible to painless, but should be accessible from an ingest processor plugin.
x-pack/plugin/spatial/src/main/java/org/elasticsearch/xpack/spatial/SpatialPlugin.java
@Override
    public List<Consumer<ValuesSourceRegistry.Builder>> getAggregationExtentions() {
        return List.of(
            this::registerGeoShapeCentroidAggregator,
            this::registerGeoShapeGridAggregators,
            SpatialPlugin::registerGeoShapeBoundsAggregator,
            SpatialPlugin::registerValueCountAggregator,
            SpatialPlugin::registerCardinalityAggregator
        );
    }
    @Override
    public List<AggregationSpec> getAggregations() {
        return List.of(
            new AggregationSpec(
                GeoLineAggregationBuilder.NAME,
                GeoLineAggregationBuilder::new,
                usage.track(SpatialStatsAction.Item.GEOLINE, checkLicense(GeoLineAggregationBuilder.PARSER, GEO_LINE_AGG_FEATURE))
            ).addResultReader(InternalGeoLine::new).setAggregatorRegistrar(GeoLineAggregationBuilder::registerUsage),
            new AggregationSpec(
                GeoHexGridAggregationBuilder.NAME,
                GeoHexGridAggregationBuilder::new,
                usage.track(SpatialStatsAction.Item.GEOHEX, checkLicense(GeoHexGridAggregationBuilder.PARSER, GEO_HEX_AGG_FEATURE))
            ).addResultReader(InternalGeoHexGrid::new).setAggregatorRegistrar(this::registerGeoHexGridAggregator),
            new AggregationSpec(
                CartesianCentroidAggregationBuilder.NAME,
                CartesianCentroidAggregationBuilder::new,
                usage.track(SpatialStatsAction.Item.CARTESIANCENTROID, CartesianCentroidAggregationBuilder.PARSER)
            ).addResultReader(InternalCartesianCentroid::new).setAggregatorRegistrar(this::registerCartesianCentroidAggregator),
            new AggregationSpec(
                CartesianBoundsAggregationBuilder.NAME,