In-progress commit for removal of MediaItem.add_resource() dependencies

Replaced HTTPIdentityHandler with HTTPThumbnailHandler and HTTPSubtitleHandler.

HTTPIdentityHandler was no longer instantiated for resources
 (HTTPResourceHandler does that now). And the remaining logic just branched
 between thumbnails and subtitles. And other type-specific logic was contained
 in the HTTPGet class.
These two new classes contain the request-specific logic and came out very
 similar to HTTPResourceHandler (which makes sense - they are also resources,
 but aren't represented/indexed exactly the same as other res blocks currently)

Added HTTPGetHandler delegation methods: supports_transfer_mode(),
 get_resource_size(), get_resource_duration(), supports_byte_seek(),
 and supports_time_seek() and removed add_resource() and knows_size().
 (the latter being effectively replaced by get_resource_size())
Thumbnail now returns a MediaResource instead of producing a DIDLLiteResource
 allowing it to produce a contentFeatures HTTP response without creating
 a DIDL serialization.

Together the changes to HTTPGetHandler (and its subclasses) remove the
 need/dependency on MediaItem.add_resource() and also remove/simplify
 type-specific logic in a number of places. (removing a number of TODOs)

TODO: Test thumbnails & subtitles.
TODO: Remove add_resource() from the MediaItem hierarchy.
Some whitespace cleanup (per Rygel coding convention)
Changed HTTPGetHandler.supports_transfer_mode() to take a null mode.
Merge branch 'cablelabs/retrofit' into cbl_cpratt/add-resource-removal
In-progress commit for removal of MediaItem.add_resource() dependencies

Removed MediaItem.add_resource() and add_proxy_resource() and subclass
 over-rides. This mechanism is supplanted by
 MediaEngine.get_resources_for_item().
Added MediaItem.add_resources() to allow subclasses to augment the
 MediaResource list prior to serializing.
Changed MediaItem.serialize() to filter out internal resources if/when the
 requesting endpoint is not local.
Changed Gst/SimpleMediaEngine to add both http and internal primary resources.
All logic contained in MediaItem add_resources() and
 add_proxy_resource() relocated to serialize() and/or add_resources() for
 all MediaItem subclasses.
Replaced use of "allow_internal" to call HTTPServer.is_local().

Added MediaResource copy constructor & fixed up formatting to Rygel coding
 conventions.
Added HTTPServer.is_local() and .set_delivery_options_for_resource() to allow
 the HTTPServer to add/remove/modify options according to its capabilities.
Changed up creation of primary resource for MediaItem

Added MediaItem.get_primary_resource() to create the primary resource for
 the file-based MediaItem (soon to be renamed "MediaFileItem") and removed
 the ill-conceived MediaEngine.create_primary_resource_for_item()
Fixed a couple bugs in SimpleMediaEngine/GstMediaEngine.get_resources_for_item()
Merge branch 'cablelabs/retrofit' into cbl_cpratt/add-resource-removal

Conflicts:
	src/librygel-server/rygel-http-get.vala
Changed MediaItem contract and MediaEngine API to take MediaObjects in place of MediaItems

Changed MediaEngine.get_resources_for_item() and
 create_data_source_for_resource() to take MediaObject instead of MediaItem.

Changed the MediaItem contract to state that they are exclusively for use
 for file-based content with pre-established metadata - which how the
 MediaExport and Tracker MediaServers use them.

The change in contract regarding MediaItem means that MediaEngine should take
 MediaObject references instead of MediaItem references. Updated the
 MediaEngine API and existing MediaEngine implementations accordingly.

Cleaned up a bit of formatting that I ran across while editing.

TODO: Add a new odid MediaServer MediaObject subclass to represent odid
 media items and update odid MediaServer/MediaEngine accordingly.
TODO: Full formatting cleanup pass.
Cleaned up get_primary_resource implementations
Resolving more MediaItem assumptions/dependancies

HTTPItemURI no longer introspects MediaObjects/MediaItems to try and
 determine the appropriate extension. Added it as a parameter, moving the
 type-specific knowledge where it belongs and allowing us to define URIs
 for things that aren't MediaItems (or part of MediaItems).

HTTPMediaResourceHandler now takes a reference to a MediaObject instead of
 a MediaItem. This will allow it to be used for non-MediaItems.

Fixed a bug in MediaItem.get_primary_resource (). It wasn't setting the
 ProtocolInfo.protocol field.
Insertion of MediaItem abstract base class. Existing MediaItem renamed to MediaFileItem

Was hoping to avoid this, but after prototyping, the alternative
 was worse...

TODO: Add OdidMediaItem and fixup odid MediaServer/MediaEngines
      accordingly.
Divorced odid MediaServer from MediaFileItem/VideoItem/etc and MediaObject/MediaItem/MediaFileItem fixups

First implementation of ODID.MediaItem (subclassing Rygel.MediaItem)

Moved more item-specific logic from MediaFileItem to MediaItem.

Fixed up references in ODID MediaServer to use ODID.MediaItem instead
 of VideoItem.

TODO: odod testing, formatting pass
Bug fixes/enhancements from testing with MediaExport

Added the CONNECTION_STALL flag to the dlna flags set by HTTPServer
 in set_delivery_options_for_resource.

Added BACKGROUND_TRANSFER_MODE flag to the dlna flags set by MediaFileItem.

Have MediaFileItem set the resource size in get_primary_resource().

Fleshed out MediaResource.to_string() to aid with debugging.

Tested streaming and Range requests with Gst/SimpleMediaEngine.
C examples need manual manipulation in order to build with new class hierarchy.
Bug fixes/enhancements from testing with odid MediaServer/MediaEngine

Separated check for GET/HEAD from getcontentFeatures header check in
 HTTPGet.handle () while trying to debug failing GETs. This qualifies
 as "cleanup". But think it's worth retaining.

Testing with odid flushed out some assumptions that all MediaItems
 were MediaFileItems.

Fixed an assumption in the HTTPGet.find_item() implementation. The
 check for a request on an placeholder MediaFileItem was not checking
 that the object was a MediaFileItem. Added the check.

HTTPRequest.find_item() has an over-complicated check to flag a
 non-playlist URI request that wasn't for a MediaContainer or a playlist
 URI request that referred to a MediaItem. This was incorrectly changed
 to refer to a MediaFileItem. Changed the check back to MediaItem
 (and resisted cleaning this up and adding to the diff).