Added NextIntersection to IObstacle, this allows me not to assume that all obstacles are spheres in SteerToAvoidObstacles.

Signed-off-by: Martin Evans <martindevans@gmail.com>
Removed assumption that all obstacles are spheres in SteerToAvoidObstacles
Rewritten Sphere avoidance to use the avoidance previously used in SteerToAvoidObstacles

Signed-off-by: Martin Evans <martindevans@gmail.com>