19622: Check for duplicates and overlaps in the schedules feed

Background

So far the feeds we got from dynamite had no duplicated broadcasts or overlaps, that's not the case with the iBL feeds since the nitro information has this issue. This is something being worked on Nitro. In the meantime, we need to make sure that our feeds are free of duplicates or overlaps.

I've separated the logic in 2 functions since it's a bit of a pain to keep track of which ones you've deleted in case you have an overlap and a duplicate at the same time.

The testing approach is very end-to-end, using a fixture. I could've made the `fix*` functions public and test'em with an array of `Broadcasts`, but I think this is simpler. If you want to add more cases to the tests, please suggest them.

https://jira.dev.bbc.co.uk/browse/IPLAYER-19622
Do you think I should port the very same logic (https://github.com/iplayer/responsive-web/blob/develop/webapp/php/lib/BBC/Tviplayer/Models/Schedule.php#L344) here?

The basic difference is that, instead of changing programme times so they meet, it's looking for gaps to insert off-air segments. I'll ask again the iBL guys to see what actual cases we need to cater for.