Divorce selection engine from tool engine

Previously, PD's tools correlated 1:1 with selection shapes (because the
program only had selection tools, and nothing else).  As I look toward
adding more tools, I need to fix this behavior.

Hence this commit.  Tools and selections are now completely separate,
and some new helper functions exist to correlate between the two.  I've
also added a dummy "navigation" tool to make sure I did it right!
Consolidate various cursor functions
Implement click-to-drag nav tool