[intersection] Add variant support

This PR adds variant support to the intersection algorithm.
Note to reviewers : There are a few test cases that do not pass in the original version and this was not fixed. One of them throw a "Boost.Geometry Overlay invalid input exception" and I suspect that the test suite halts at that point (probably avoiding the next test cases).