Bug 1067130 - Overhaul mouse target finding, hit testing, and getObjectsUnderPoint

Unifies handling of these three things into one pretty complex mechanism. The individual parts should be fairly straight-forward, though, and there are lots of docs.

Needs bugfixes, tests, some more documentation, and a good review.