Initial version of Channels ingest task, with some initial tests
Tidied up Channels and ChannelGroups. References to channels/channelGroups are now Longs (i.e. the object's id field).
Updated usages of channels and channelgroups to work with changes.
Extensive output changes, including a rewrite of the ChannelGroupController, to add several new annotations and filters.
Also added integration tests for Channels ingest, along with various tweaks and bug fixes.
Add repetition rule for channels: every 12 hours
Only process latest channels file, mark all others so as not to recheck them at a later date.
Optimised platform processing code, so each channel is only read/written once per platform
Change name of channelGroups collection from 'channels' to 'channelGroups'
Refactor of channels ingest, plus ingest of new regional/timeshift fields, and ingest of highDefinition and mediatype fields.
Also now ingesting youview channel aliases where provided by the PA
Ensure response has character encoding and content type set, to prevent dodgy characters from incorrect decoding of UTF-8
 - Change region uris & aliases to be PREFIX + platform id + "-" + region id.
 - change date serialisation to output in format yyyy-MM-dd
 - change simplification to output correct historical blocks
 - channel.startDate now on top level of channel rather than in history block
 - channel tests updated to use new method name and new region uris/aliases
 - Change channel number to string, to cope with cases such as sky using both channel 101 and 0101.
 - Modified logic around history to reflect that multiple channel numbers may link a given channel/channelGroup pair at a given time.
 - Added initial version of test to check behaviour of channel numbering simplification
Refactor of Channel Number simplification. Modification of condition around filtering numberings when the history annotation isn't specified
Rework testing for channel numbering simplification, and resulting modifications to simplification code.
Major refactor of the channels ingest, to improve speed and to try and eliminate situations where incomplete data is written
set platform to null when simplifying, if there is no platform on a region (allows legacy regions to work)
Don't catch and log exceptions, fail the channels updater
Update job status with processed file name
copy across channel numberings when merging a new channel to an existing channel
Use a Predicate with Iterables.filter to replace the getRegional() method in channels ingester.
Ensure that channels of type 'Radio' are ingested as MediaType.AUDIO