Got a flat Floor working (#16)

This change finally gets a flat Floor to redirect standing Mobiles when they move, and stops falling Mobiles.
It does this by using inequalities to determine where the Mobile's start and end positions are relative to
the Surface.

It also refactors the Intersection object and Position object so that they extend "PointLike", which allows
us to make some nice functions like 'inBounds', 'onSurface', etc.