polygon currently has individual exterior_ring and interior_rings members.
It would be easier to work with in certain cases (notably GeoJSON serialization/deserialization) if it instead inherited from std::vector<linear_ring<T>>, where the exterior ring was element 0 and interior rings followed.