git_tree_get_subtree -> git_tree_entry_bypath
much-needed rehaul

This way-too-big changeset reworks almost all of git-lolevel.scm, fixes
a handful of memory management issues, adjusts code formatting in a
bunch of places, and brings the library up to date with libgit2's
current API (for the most part, I think).
provide object-owner
export remove-url-{valid,supported}?
bump required libgit2 version to 0.18.0
provide oid=? and object=?
take lookup'd objects to records directly (without relying on general lookup interface)
separate repo path & workdir lookup into two functions
ensure references are correctly GC'd
dup tree-entries into CHICKEN's control for GC
provide tree-fold & tree-entries (rather than tree-walk)

This matches the fold interface used for other object types, and brings
the yielded tree-entries under CHICKEN's control w.r.t. GC.
replace tree-builder-remove (accidentally deleted)
tag index-entries with their index

This keeps a reference to the owning index, to prevent it from beeing
free'd out from under them.
tag diffs w/ their diff-list to prevent it from being free'd
remove unused tag type argument to tags-fold
finish cleaning up tests for recent changes
remove use of commit lookup function in merge-base
add missing repo argument to git-blob*-lookup
big documentation update
Merge branch 'development'