Capture example logic code for posterity before removing it.
Split out 'sub-paths and adjust to return file components.

This is being done to facilitate merge commit handling. We don't care
about non-'project.clj' files but we'll get them anyways now. They add
only a small size to the DB.
Adding proper merge commit handling.

We now track merges according to paths and files that mere changed by
more than one parent of the merge.

This is important if there are non-colliding changes happening within
a project. The resulting project is a *new* thing but this is not
directly detected by conventional merge logic. Merges either ignore
all changes or show all changes. Showing all changes makes it look
like a merge delivers a new project, even if the change within a
project was done via a single ancestor (meaning that the ancestor is
actually the point where the change should be noted).