C4 EPG ID Refactor

Refactor C4 EPG Updater to use provided Progamme IDs. Synthesized items
should not be created. Existing items will have an ID-based URI alias
added.
C4 PC/Xbox adapter work-in-progress
C4AtomBackedBrandUpdater resolves existing content and merges with fetched data
Add new tests and fix existing ones.
A brand name should always be returned; it's an error if one cannot be.
If we are ingesting for a platform then we should set the platform on the version's policy.
Support C4 programmeId-style curies
Support null objects
Update base URI and add xbox scheduled task
Fix and add tests
Change base URIs
Remove redundant class; we now use the standard AtoZ updater for other platforms
Change URI pattern to pmlsc.channel4.com
Some small fixes:
- Ensure an episode URI can always be constructed
- Only set duration from fetched item if we have one
- Improve logging
Add an alias of series/episode form when creating an item from the 4od atom feed.
Only extract an encoding if we have a media player entry. Previously we were extracting if we had any media,
including just thumbnails
Set series and episode numbers if we don't have them already
Various fixes to C4 Module
Catch exceptions from C4 4OD extractor.

Prevent exceptions in C4 OD episode extractor from bringing down the
entire update for a brand.
Ensure C4 content is written as Episode.

Ensure any C4 Content read as an Item is written as an Episode when in
the Brand updater. This is performed through copying the Item into a new
Episode before updating from the newly fetched Episode.