Database Error handling fixes

Made Miro quit correctly for frontend errors.  Fixed infinite loop
when a retry callback seen another database error.
Added ability to do more complex order by expressions in ItemTracker

We'll need these for a couple of the item sorts
Wrap _copy_data_to_newdb() in a transaction

This makes it execute much faster
Don't initialize the frontend data package until startup_ui()

Otherwise it happens before database upgrades and which causes lots of
weirdness.  On linux, it means that the file opened is the sqlite path
before the upgrade.
bz19768: Finished a bunch of sorting code

Fixed the description property of ItemInfo.  Now it falls back to the
entry description if it doesn't have one from the metadata.
Added size column to the item table

This allows us to sort by it easier.
Re-implemented sorting by the album view column
Fixed corner case when sorting by album view

This fixes a corner case when the user is on the video tab and sorts
by the album view column.  See #19768 for an explanation.
bz19795: Fix crash in renderer initialization code

I'm not sure exactly what's happening, but it seems like a threading
issue to me.  Moving the code so that it happens before the portable
startup code, seems to fix things for me.