misc: (*EpisodeRange).Split(*Episode) -- Splits a range

Also define Inc/IncNumber/Dec/DecNumber for episodes, used internally by
Split. Includes test.
misc: Be more cautious when merging partial ranges

Change the touch() method to not accept touches where the left side is a
partial episode with unknown number of parts. If the number of parts is
known, then only accept if it's the last part.
misc: Allow adding/removing arbitrary episodes to an EpisodeList