Start new composition view controller, a keyboard-avoiding text viewer.
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!
Extract replies into a separate ReplyWorkspace class and save drafts to disk.

A ReplyWorkspace manages a CompositionViewController (among others) to get its work done. It saves drafts to disk, rather than relying on UIKit State Preservation. This paves the way for a future "open draft" function on compose button items.

Meanwhile, AwfulSettings is now KVO-compliant for all AwfulSettingsKeys. This'll probably end up more convenient than a notification in almost every case, especially with FBKVOController.

Speaking of, I added a lil Swift helper method to FBKVOController for typed observation blocks.

Oh, and PostPreviewViewController got de-Awful-prefixed.
Fix crash showing error from bookmarks list.
Extract image attachment uploading and invoke from ReplyWorkspace.
Rework composition menu's notification handling.

I was finding that the showingSubmenu property was unexpectedly false within the notification handler. Not sure what was going on, don't really care atm.