Use gesture recognizers instead of touches(Began|Ended|Cancelled)

Touch handling via touches(Began|Ended|Cancelled) is pretty old school. It also means that if you put an OHAttributedLabel inside a view that has a touch gesture recogniser on it then it won't fire on links being tapped as gesture recognisers use an inverted responder chain. These commits fix all that by converting OHAttributedLabel to use a gesture recogniser.