just gjk code cleanup and interface clarity

the goal here is to let this module also be useable (perhaps even useful or educational) outside the huge engine i had this in previously.
gjk header code moved into namespace to avoid function name collisions for users
some convenience functions showing how to use it with arrays - specifically std::vector<float3> objects
the hitinfo is now the return value - it still evaluates to bool for convience.