Change some foldrs to all
PatchActions and ChangeHunks that are identical conflict

This is because abstractly this makes sense, two identical
patches do conflict, but are merged trivially.

added onlyOne hof and updated noConflicts accordingly
Replaces onlyOne with noDistinctPairs for noConflicts
Code for removing duplicates no longer needed

Due to changes with how two identical patches are handled, we
don't need to remove duplicates in the no-conflicts.
Making mergeParallelPatches more readable
Reindent & comment createCommit

Using the State monad can get confusing, and we added comments to remind
ourselves of the bug we fixed in 133e8121a
Fix datatype syntax
Preliminary rebaseStep
WIP resolve + comments
WIP no continuations
Rewrote rebase to move more code into Nor

To have more pure functional code, re-wrote rebase to
be more of a pure function and only going to the file system
when necessary.
Fix taking head of empty list

Keep tor on when we're doing the Conf step so we can serialize it and use it
in the rebase --continue step.
Clean up code

Remove comments
Put types at the start of the file
Fix indentation
Move test functions to Test.hs
Remove more commented-out code
WIP rebase tests
Bug fix for test

Foldl not foldr derp
Remove unnecessary property
BranchedCore datatype for generator

This allows arbitrary non-conflicitng (if working) branches
to be generated. Added commented out shrink code, not sure
how best to shrink but it is a start.
First rebase properties

Added two rebase properties, first being that it succeeds on
non-conflicting branches, the second that on non-conflicting
branches, the files are identical for "rebase a b" and "rebase b a"

TODO: Both currently FAIL. Need to figure out why
Bug fix for branched Core

The range for the splitAt was wrong, creating only a single branch
which then coudldn't be used for rebase.