[gitconv @ Straightened out the code path through N.M.Commands.takeEntries]
Utils.splitGroups got rewritten to support multiple cycle keys, not
just the first one encountered. Commands.takeEntries was rewritten to
return a type EntryType instead of a 3 tuple, and the functions that
use them were adjusted to fit. Doing this avoids building up a big
tuple of lists which just gets concatenated back together and makes
the code easier to write with mostly short point-free pipelines. The
main thing holding up performance now is the call to reverse in
takeEntries. For some reason the response is returned with the line
order back to front.
splitGroups' tests had to be changed because of its new signature and
Commands.takeSongs now expects a 'file' line at the start of each
group, so plChanges' test had to be changed.