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.