Refactor GJK to make it unaware of the concept of CSO.

GJK can be interpreted as an algorithm which compute the distante from the origin to a polytope.
Now it is implemented as such.
To make GJK compute the distance between two polytopes, one only has to feed it with the CSO formed by the two polytopes.