Should now better handle multiple touches
Tidied up the touch-support code and added some more comments.