Don't highlight/select cell if delegate says not to.

[UITableViewCell -tap should also deal with highlighting](https://www.pivotaltracker.com/story/show/68390506)

* Refactors `UITableViewCell` tap method to use (undocumented) Apple API that better matches what happens in real code.
* Doesn't highlight or select cell if delegate says not to:
  * If `UITableViewDelegate` responds NO to `tableView:shouldHighlightRowAtIndexPath:` then don't select or deselect the cell.
  * If it responds YES (or doesn't implement it), then continue selection.

Our understanding of Apple's undocumented call chain flow:
* Tap cell
* `unhighlightRowAtIndexPath:animated:` or `highlightRowAtIndexPath:animated:scrollPostion:`
* If delegate responds or returns YES to `tableView:shouldHighlightRowAtIndexPath:`, continue
* `_deselectRowAtIndexPath:animated:notifyDelegate:` or `_selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:`

The same thing happens for Storyboards.