bz19464: Fix deprecated messages.

Some APIs have been deprecated but they are particularly obnoxious
with spamming the console with deprecation messages.  In the
interest of mitigating this the said APIs have been migrated to
new style APIs.
bz19450: don't create the focus-out signal twice on OSX

It's already created in the base Widget class, so we don't need to also create
it in MultiLineTextEntry.
Merge pull request #408 from bendk/fix19450

bz19450: don't create the focus-out signal twice on OSX
Merge pull request #407 from geoffl/bz19464

bz19464: Fix deprecated messages.
libavformat introduced `av_guess_format` in v52.45.0 -- use that version.

doc/APIchanges:
""
  2010-01-01 - a1f547b - lavf 52.45.0 - av_guess_format()
    Add av_guess_format(), it should be used in place of guess_format().
""
Silence warnings on `GtkItemFactoryCallback` declarations.
Declare `miro_fixed_list_store_get_type`.

Currently used in the wrapper for `miro_fixed_list_store_row_of_iter`.
Fix declaration of `soup_cookie_jar_text_new`.

It returns a `SoupCookieJar*` that can then be casted to `SoupCookieJarText*`.

http://developer.gnome.org/libsoup/stable/SoupCookieJarText.html#soup-cookie-jar-text-new
Fix call to `soup_session_get_feature`.

It returns `SoupSessionFeature*`, which is an interface that is implemented
by `SoupCookieJar`.

http://developer.gnome.org/libsoup/stable/SoupSession.html#soup-session-get-feature
http://developer.gnome.org/libsoup/stable/SoupSessionFeature.html
Fix call `gtk_tree_view_column_set_cell_data_func`.

Missing argument casts for `func_data` to `gpointer`, and
for `destroy` to `GDestroyNotify`.

http://developer.gnome.org/gtk/stable/GtkTreeViewColumn.html#gtk-tree-view-column-set-cell-data-func
Silence uninitialized warnings on `__pyx_exc_lineno` when building `infolist`.
Save DeviceItems to the sqlite database instead of the JSON one.

Rewrote DeviceItem to inherit from DDBObject rather than store itself on a
JSON database.

Updated code that upgrades from old JSON databases:
  - Kept the code that imports data into the metadata tables

  - Added code that creates an entry in device_item for JSON items

  - For each item that has an entry in the metadata_status table, but not
    device_item, create an entry in device_item using the data from
    metadata_status (this handles items that were created by miro 5.x)

  - Remove code that handled items where the upgrade code failed.  Now we'll
    just create new entries for any files found in scan_device_for_files()
    that don't have a corresponding DeviceItem entry.

Store a DBInfo object in our device database rather than just the sqlite
database.

Changed a lot of code in devices.py to work with the new DeviceItem object.

Made a base class for both Item and DeviceItem.  Moved a bunch of code from
Item into ItemBase.

Moved code that tests upgrading device items from the JSON data from
metadatatest to devicestest.  Now it tests creating DeviceItems in addition to
metadata objects.

A couple things are still not working yet:
  - We don't ever set the auto-sync flag
  - We need to replace the ItemSource code with a version of ItemTracker that
    works with devices
Added code to upgrade device databases from version 5.x.

This makes things a bit more complex because we need to worry about upgrading
from both 4.x versions and 5.x versions.  Changed the devicedatabaseupgrade
code from a function object to a regular class.  It needed to be changed to
deal with the extra complexity.

Made it so that database upgrade funcs conditionally run based on if the
database is the main DB or a device database.

Added unittests to check things.

Changed the linux setup.py to copy the entire testdata tree to the resources
directory.  This way we don't need to keep modifying it every time we add a
subdirectory.
Added test for our device database upgrades

This one uses basically the same code as the regular db upgrade test.  We
check that the schema is the same for a fresh database and one that was
upgraded.
Moved code that creates objects to a single module

I think this is a nice cleanup.  Now it can be used by any unit test.  I also
think it's better to have a separate module than to shove it in with the rest
of the stuff in framework.py
Refactored item/itemtrack to make them more flexible.

This is all preparation for making a version of ItemTracker that works with
device databases.  For those, we are using the device_item table instead of
the item table and also we aren't joining to the tables like
remote_downloader and icon_cache.

The steps to make ItemTracker work with a device database are:

- Subclass ItemSelectInfo and define the select for device databases
- Subclass ItemInfo and override the select_info attribute
- Subclass ItemTracker and override the item_info_class attribute
Added SignalEmitter.connect_after()

Used it to send the ItemChanges message.  This is also in preparation using
ItemChangeTracker for device databases.  This way we know when our callback is
called the main database and all device databases have committed their
transactions.
Added note for device upgrades
Implemented DeviceItemTracker.

Wrote DeviceItemInfo, which subclasess ItemInfo, but is created from a
different SQL query.

We now create a ConnectionPool object for each connected device on the
frontend.  There should only be a connection while the tab is being displayed,
so it shouldn't interfere with ejection.

We also create a subclass of ItemChangeTracker that handles changes for all
device items.

Fixed a couple bugs with the ConnectionPool._check_wal_mode() logic.
Changed DeviceItemInfo to make it work like ItemInfo