Improve ngClick base on discussions in issue  #3198 (https://github.com/angular/angular.js/pull/3198)

changes:
    1. in onTouchStart, only reset tapping to false if the it has moved outside the MOVE_TOLERANCE
    2. abstract repeat code into a function
    3. add tests for different touch scenarios