Functionality to find "difference" between two Git trees

This is necessary to merge two hesobases (see hesokuri.hesobase) where many
log entries are shared between them. The diff-finding logic can skip entire
trees if they have the same hash, which is important when log histories scale
into larger and larger sizes.

Swapped order of require and import directives in the hesokuri.git namespace,
since this was required to allow "lein test hesokuri.git-test" (without running
other tests) to work.

Added utility macro to shared testing code for creating test hashes concisely
without using pre-defined hash values like *hash-a*. This is necessary to
support the tblob macro, which was added to implement the tests in this commit.
Rewrite new-source hesobase cmd for conciseness

Rather than loop and recur; use map, filter, and reduce.
Fix things in hesobase module re: log blob paths

1. Forgot to include command name in the path, do this
2. Add test to make sure command names can appear in paths safely
   (use %-encoding)
3. Convert blob path back to original command information
Allow hesokuri.git/tree-diff to eliminate blobs with equal content
Implement merge logic for hesobase Git trees

Accomplished by re-applying all commands to each tree since the merge base to
the merge base in chronological order.