[GEO] GIS envelope validation

ShapeBuilder expected coordinates for Envelope types in strict Top-Left, Bottom-Right order. Given that GeoJSON does not enforce coordinate order (as seen in #8672) clients could specify envelope bounds in any order and be compliant with the GeoJSON spec but not the ES ShapeBuilder logic. This change loosens the ShapeBuilder requirements on envelope coordinate order, reordering where necessary.

closes #2544
closes #9067
closes #9079
closes #9080
Personally I like some called "validate" to only do validation, but it seems like this is also doing some logic for the order of the points. You might consider moving these last lines into `parseEnvelope`, and then you don't need the `points` array.  I think the function could then be simplified to:
```
validateEnvelopeNode(coordinates);
Coordinate uL = coordinates.children.get(0).coordinate;
Coordinate lR = coordinates.children.get(1).coordinate;
if (lR.x > uL.x && uL.y > lR.y) {
    Pair<Pair, Pair> range = Edge.range(points, 0, 2);
    uL = ...;
    lR = ...;
}
return newEnvelope(orientation).topLeft(uL).bottomRight(lR);
```

And at that point I'm not sure the point of having a separate validate function?