Significant work to improve both the internal architecture and user experience.

We have been using SWTableViewCell in our main project at my day job; it works quite well and I like it. I've been keen to tackle a few of its shortcomings and try to address some requested features. I have been able to spend the last few days working on SWTVC exclusively.

My first desire was to address #97 (adding client methods to reveal the utility buttons, specifically which could be invoked from within tableView:didSelectCellAtIndexPath:). To make a cleaner implementation I wanted to lay a groundwork where SWUtilityButtonView had the agency to determine its own nominal size (according to its buttons array). It seemed that using a constraint-based layout would be a great means to support this, and also provide a way to eliminate some of the other view-related contortions the code currently deals with. In the course of improving this, a number of other optimizations and improvements became obvious, which I integrated as I went along.

Thus, the essence of this work is improvement of architecture and code design, also with a few functional fixes that became obvious during testing.

I apologize that this is a rather voluminous PR in one commit. If this is unduly onerous to evaluate, I can refactor it out into pieces. I look forward to contributing further work to SWTVC that builds on this.

Summary of work in this commit follows.

ARCHITECTURAL IMPROVEMENTS:

- Re-worked much of the view geometry to use auto-layout (in particular, management of the utility button views). This allows some automation and increases flexibility.

- The utility button views are now created only once at init time, and can be re-populated ad nauseam at runtime with no ill effects.

- The init time reshuffling of subviews has been minimized; now the existing `contentView` is preserved as-is, and simply moved into our custom scroll view.

- Removed several property setters whose values are now derived automatically: `height` is inferred by auto-layout; `containingTableView` is determined in `didMoveToSuperview`; `backgroundColor` now works again with superclass implementation; `appearanceBlock` is no longer necessary.

- Simplified and consolidated redundant logic in several places, particularly in `scrollViewWillEndDragging:::`.

- Cleaned up some of the interface for improved style (public vs. private properties and protocols, clarity in naming of properties and methods, etc.). Also moved the constants declared in SWConstants.h to the appropriate files for semantic locality.

USER-FACING IMPROVEMENTS:

- A cell can now have its utility buttons revealed while it is in a selected state.

- The UITableViewDelegate method `tableView:shouldHighlightRowAtIndexPath:` is now called (to suppress touch highlighting and selection if implemented and returns NO).

- The return value from the UITableViewDelegate method `tableView:willSelectRowIndexPath:` is now respected (to disallow selection or target a different row; previously ignored).

- Selection/deselection behaviour is now more consistent, and akin to UITableViewCell, whether invoked as a result of a tap or long-press gesture.

- Maximum width for utility buttons is now determined dynamically according to the cell's size, and also updates itself automatically (e.g., in response to an orientation change).