Helpers and Wrappers for use with GJK to select the appropriate margin and support function based on context. A different margin is used for sweeps and collisions, and margins are used or not depending on the shape pair type involved.Wraps an shape object (could be FImplicitObject or some other type with the required API) and provides the API required for GJK, treating the shape as if it has zero margin. This means spheres will be spheres (not points with padding), convexes will be the outer hull, etc.