Completely rewrite of the FTouchManager

This new FTouchManager is 100% backwards compatible, but supports a new type of touchable called FSmartTouchable. The FSmartTouchable makes it way easier to deal with multiple touches in a, um, "smart" way.

This still needs some testing (especially on Android etc.) before I move it to master, but so far it works really well.