Initial version of granular uploads refactor. For simplicity/speed the interfaces involved have been duplicated, so
there is a standard and a Granular- version of each. The Nitro classes have then been moved across to the new Granular-
interfaces, as have the various controllers and other shared classes. Testing still needs improving.
Fix broken Tasks persistence tests
Fix errors relating to incorrect timezone on outputted date times
Fix test broken by changes to NitroGroupInformationGenerator on stage.
Add back the full upload functionality for a given uri, to enable easier testing with the granularity changes.
Tweak full uri upload to deal with non-Item content uploads.
Move 'start of time' bootstrap start time to 28th November, to give a short window for bootstrap content.
Enable YV Delta uploads, to run every 30 minutes.
Tweak output based on output of diff scripts. Misc small changes.
Actually log full exception details rather than just type of exception (log([msg], [ex]) rather than log([msg] + [ex]))
Move Bootstrap last_updated time forward to 2nd Dec.
Create marshaller per request, rather than reusing
Re-add FeedStatsStore back into upload tasks
 - Remove actual availabilty start from the ondemand id key.
 - don't expand ondemands unless they have the correct youview platform
Ensure Pips OtherID is left in, as removal causes validation to fail for all ondemands.
Refactor Feed Statistics:
 - remove uptime, as metric is not useful
 - refactor writing, as feed stats will always be updated together
 - ensure both delta and bootstrap tasks set feed statistics correctly
Add version pid as OtherIdentifier to TVA versions
Filter out audio content from the content returned by the content resolver.
Trim descriptions down to maximum permitted lengths if they exceed them.
Only send a programUrl once per crid