fix bug-prone pieces of code pointed out by findbugs
avoid Java7's Objects.hash
beware NodeRef.appendChild can be given the root path as parent
remove dead code
centralize computation of nested tree bucket, allow to specify the maximun number of buckets per tree to reduce the number of buckets a tree is split into, and re-compress a buckets tree to a children in RevTreeBuilder when eough children have been removed from a splitted tree
Added remote commands.
Added unit and functional tests for remote commands.  Added -t parameter to specify a branch to track for a remote.
Updated javadocs for remote commands.
no need to return Optional<List<Remote>> when an empty List<Remote> would suffice
print more concise help when no command was specified
Changed configdatabase to return empty lists and maps instead of Optional.absent for methods that previously returned an optional of a collection.
improve RevTreeBuilder's performance by avoiding to track tree size in real time. It's of no use anyways
faster computation of number of diffs between two trees, without needing to traverse the diff iterator. Doesn't work for filtered paths yet, deferring to iterator traversal.
Cleaner implementation of HashObject using guava funnels
Fixed file deletion problems when running under Windows (affects cli and functional tests)
Added rebase and reset commands.
Improved RevParse plumbing command and rev-parse cli command to support parent/ancestor notation (e.g. HEAD^^^, refs/heads/branch^2, HEAD~3, etc)
upgrade to jline2 2.9 and add --oneline option to the log command
restore missing newline in standard log output
root (orphan) commits should have _no_ parents, instead of ObjectId.NULL as first parent. Use RevCommit.parentN(int index):Optional<ObjectId> instead of checking for getParents().get(0).equlals(ObjectId.NULL)