Only update table views when visible, and reload them in viewWillAppear:.

I thought we were past this, but I guess not.
Formatting.
"Sort Unread Threads First" now groups by page first, then unread.

Nobody seemed to like sticking all the unread threads together at the top.

Which makes total sense, it was just less effort to test it first. Plus I never really go beyond page 1 so I personally didn't care.
Set themed view background color and scroll view indicator style in AwfulViewController.

This way it's harder to forget to do it.
Fix root view controller navigation identifier generation.

This was turning the identifier into something like `Optional("Messages") navigation`, which was not the intent.
Fired a little too quick on the sort unread threads first change; specify an order within each page!
Guard against infiniteScrollingView being nil in the bookmarks list.
Having the compose text view become first responder in viewDidAppear didn't fix anything, so let's switch back.
Start new composition view controller, a keyboard-avoiding text view haver.
Extract the autoclose BBcode stuff into its own class.
Extract "toggle smilie keyboard" button into its own class.
Extract the composition text view's menu to its own class.
Tidy up AwfulTextAttachment API and move thumbnail knowledge there.
Tidy up BBcode bar (nee KeyboardBar) API and add it plus menu to the new composition view controller.
Fix showing submenus in new composition view controller.
Move Swift.Array extension into its own folder.

Not really a "Framework Category".
Hello FBKVOController.

Why am I still implementing observeValueForBlahBlahBlah over and over?
WIP reply workspace, still needs to post and such