This comes to resolve many issues with SwipeRefreshLayout but based on a lot of
debugging. As a result the code is somewhat brittle.
Because we'd control responding to touches and updating the UI we need to be as
swift as possible and as such to differentiate between possible gestures I am
some simple layman's ways of doing this and GestureDetector / ScaleDetector
instances since they would add to the execution time and overall complexity,
and their callbacks would be hard to synchronize.