Don't crash if a new thread's link can't be found.

Presumably this indicates some kind of error, but I can't be arsed to find out.
Break retain cycle when quoting a post or marking a thread read up to a post.

We were seeing some crashes from UIKit that stemmed from presenting the replyViewController after retrieving a quote. I don't know if this is the fix, as the error message is just vague enough, but it's a fix that's needed anyway.
Bump version to 3.0, deployment target to iOS 8.0, and temporarily silence deprecation warnings.
Switch to (horizontal, UIKit) tab bar controller on all devices.

This is how it was in Awful 1, and to be honest it's the superior interface.

The PM and Leper's Colony view controllers needed more helpful tab bar item titles, and the sidebar on iPad can shrink down now as there's no horizontal space needed for a tab bar.

Bump the interface version stored when preserving state, as they're no longer compatible (the class of the decoded object for the "root" identifier doesn't match). And while we're here, formalize and describe the interface versions.

Don't try to restore old, incompatible state. This means we can get rid of the otherwise pointless AwfulExpandingSplitViewController class, because we're not restoring state that involves it.
Mark off part of app delegate.
Delete pointless Info.plist keys.

I hope they're pointless...
Extract view-controller-of-type hierarchy search to UIViewController category.
Switch to UISplitViewController on all devices.

* Delete home-baked AwfulSplitViewController.
* Use -showDetailViewController:sender:.

As a bonus:

* Set light content status bar style on launch, and opt out of UIViewController-based status bar style. Unlike AwfulSplitViewController, UISplitViewController returns nil for
-childViewControllerForStatusBarStyle. We use light content everywhere anyway, so easy fix.
* Since we've already given up restoring state from Awful 2, let's rename all the root view controller restorationIdentifiers!
* Don't consider user interface idiom when restoring state. Xcode 6 no longer tries to mix and match idioms in the iOS Simulator.
Fix iOS 8 deprecations.
Reimplement jump to page view controller as Selectotron using iOS 8 presentation.

Bonus:
* Swift! So hello bridging header, relevant project settings, etc.
* Since Swift enums and C enums don't quite map perfectly, change some AwfulPostsViewController API to work in integers instead of AwfulThreadPage.
* Delete unused theme keys that I only just noticed when searching for "jumptopage".
* Normally I would split out Selectotron protocol implementations into extensions, but Xcode 6 Beta 6 does not make doing so an enjoyable experience.
Rename +[AwfulSettings settings] to +sharedSettings for Swift availability.

Can't get at class methods named for a suffix of the class I guess.
Redo posts page settings view for iOS 8 presentation.
Converted AwfulDateFormatters to Swift
Fix copyright header.
Empty xcodeproj of default class prefix.
Move in-app action sheet over to a NIB, with Swift, and iOS 8-style presentation.
Simplify JavaScript calls for getting post/PM header bounding rects.

Everything's a popover now.
Fix missing "show sidebar" button item on iPad after restoring from state.
Factor out root view controller stack.

It's like a storyboard! A really shitty storyboard.
Rename view controllers whose class names appear in state preservation.

Eventually I want to give everything a consistent name without the Awful- prefix. For now, just do the class names whose changes break state restoration.