all of the LiveScript!
correctly catches circle/line intersections when there's one intersection
converted a lot of helper functions to LiveScript