Upgrades to internal libgit2 version. Valgrind memory testing to ensure no serious memory leaks and no stability issues with segfaults. Updates to the internal API to not rely on iterative approach, but instead an evented approach to trees and revwalks. Better documentation and more checks for linting.