Feature/is valid

Use `boost::geometry::partition` to improve the performance of `is_valid` for polygons and multi-polygons