bz19466: fix drag and drop on OSX
bz19760: fix playback code on OSX.

app.info_updater no longer tracks item infos.  We don't need it anymore
because the overplay code already connects to the playing-info-changed signal
of app.playback_manager.
Fixed the share action.
Try at #19773: fix OSX tablemodel code when we change the list

Connecting to the will-change signal matches what the code is trying to do.  I
think it may fix the bug, although I don't know because I couldn't reproduce.
bz19797: fix for removing webkit browsers
bz19780: handle DB errors in has_playables() and select_playable_ids()

I didn't know a way to get this to reproduce, but I made a unittest
that should simulate what happened.
bz19766: Re-implement manually setting cover art for items
Fixed redrawing cover art after changes.

After my last change, I noticed that cover art doesn't get updated
until you restart miro.
Re-implemented displaying feed thumbnails for items.
Moved the startup logging code around.

This will help me time how long it takes to startup miro better.
Refactored the startup checks code

I think it makes sense to put them in the same class since they're so
closely tied together.  Also made it so in the normal case, we don't
use any idle callbacks.  I'm not sure if this will make a big
difference, but it could be faster and it doesn't hurt anything.
Added some debugging printounts for startup times
Startup cleanup phase one.

Moved a bunch of code to run later on in the startup process.  The
idea is to make as little as possible run in the backend until we have
our window up.

Renamed some of the functions in startup.py and added docstrings.

Don't setup app.transcode_manager.  We don't actually use that
anywhere.
Wait until the frontend is started up to run icon cache updates
Wait until the frontend is started to setup the device tracker.

Made device tracking implicit.  The frontend no longer has to send the
TrackDevices message.
Don't track shares until after the frontend has started
Load search engines lazily

Loading engines actually takes a somewhat large amount of time, so we
shouldn't do it until we need to.
Another sharing speedup.

Defer calling mdns_init() until we really need to.
Don't load the progress bar inactive surface.

It takes a non-negligable amount of time and we don't actually use it.
Fix for startup when search engine not set to all

I noticed on my mac book that this made miro crash during startup, since the
_engines attribute wasn't set up.  Fixed the crash and also changed it so we
call calc_urls() lazily.