Fix crashes on iOS 5.

NSFetchedResultsController manages to hang around on iOS 5 and will try to send
to its delegate after said delegate gets deallocated..
Deselect thread cells on tap.

They deselect when the table view disappears from view, so this omission went
unnoticed until the "keep sidebar open" option appeared.
Remove redundant setting for bookmarked threads.

The isBookmarked value gets applied from the parsed info.
Fix star color parsing for bookmarked threads.

Changed in the New Year's forum update; managed to miss it due to shitty tests.
Fix notifications in thread list.

Ensure they come in on the main thread, and that they're unregistered in
-dealloc.
Formatting.
Don't try to update thread tags on missing cells.

This can happen if e.g. we look for a tag for a page 2 thread, then refresh the
thread list, so the page 2 thread's cell isn't shown anymore. I think this
results in a crash.
More external browsers.
Fix split view weirdness in iOS 5.1.
Fix tab bar controller on view load.

If we've already selected a view controller, we need to add it when the view
loads. Especially important in iOS 5, where a memory warning causes the view to
disappear.
Simplify updating threads from parsed info.

In case we get multiple threads for some reason, this'll handle it now.
Fix duplicate/missing threads.

This was especially noticeable on the bookmarked threads screen.

If a thread gets moved and updated at the same time, we temporarily have a
mismatch between the table view cell's index path and the corresponding fetched
results controller object's index path. (This happens because we're within a
UITableView update block–so cell index paths won't change until the update block
ends–but the fetched results controller uses the new index paths immediately.)

The fix is to configure the cell at the "old" index path with the object at the
"new" index path. Oddly, the template implementation for
NSFetchedResultsControllerDelegate provided by Apple does not take this issue
into account.

The clue here was noticing that the indexPath and newIndexPath parameters didn't
always match when the change type was "update".
Fix null threads in thread/bookmark lists.

Sometimes NSFetchedResultsController doesn't give a newIndexPath for an update.
Remove "Keep Sidebar Open" setting.

Just show it in landscape, hide it in portrait.

I could not get UISplitViewController to hide/show the master view immediately
on changing the setting, and I could not get the setting to take effect
consistently on both iOS 5 and iOS 6 without quitting and reopening the app.
This seems like the most sane setting, so let's just leave it.
Don't re-add child view controller in tab view.

Just need to add the view in -loadView, not the child view controller stuff.
Doesn't seem to do any harm, but this feels more right.
Tab view doesn't spuriously load its view.
Animated gif support in image preview

fixes #119
Don't re-download animated gifs.

Just get the data once, then check if we can animate it.
Built-in browser can go back and forth.

Fixes #148.
Fix build instructions in readme.