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.