fixed ApplyDiffOp to avoid errors with missing nodes
Properly handle unqualified ref names in local push
Test for qualified names in push
Made geogit CLI exit with non-zero exit code when a wrong command is entered
Merge pull request #692 from volaya/non_zero

Made geogit CLI exit with non-zero exit code when a wrong command is entered
New --bounds option to the diff operation to print out the boudning box of a diff instead of the diff itself.

There's also a new plumbing DiffBounds command for the java API.
So far the command assumes all features are in the same CRS.

co-author: Neelesh Bagga <nb287@cornell.edu>
Reset old/new envelope for each run in order to compare old/new object of the same entry only
Removed unused --raw switch and corrected some wrong parameter definitions in Log command
Added support for since..until sintax in rev-list command
Merge pull request #688 from volaya/osm_ways

fixed ApplyDiffOp to avoid errors with missing nodes
Merge pull request #693 from volaya/log

Removed unused --raw switch and corrected parameter definitions in log command
Merge pull request #698 from groldan/diff_bounds

--bounds option to CLI's diff backed by a new DiffBounds plumbing command
extra precondition check for the tag command
Refactored the LowestCommonAncestor algorithm to the op.
Initial implementation of BDBJE graph database.
Other graph backends now run FindCommonAncestor tests.
Refactored the sparse path check out of the graph database.
Some JEGraphDatabase improvements.

- Use a single transaction in put(ObjectId commitId, ImmutableList<ObjectId> parentIds)
  to insert update the node and the parent nodes.
- Use a more compact serialization format than default java serialization, based on BDBJE TupleBinding
- Remove some dead code
- Use its own environment, and the raw byte[] object id as key instead of a string. It uses a
  separate database even if using the same environment than JEObjectDatabase so no need for the
  extra overhead.
Fixed an issue which caused clone to fail when tags were present.
Cleaner and possibly faster way to traverse diffs.

Introduces DiffTreeVisitor which traverses two trees in parallel, calling
a method of a provided DiffTreeVisitor.Consumer for each diff encountered
(either a pair tree or feature Node, or Bucket), allowing the traversal
to skip whole subtrees (both named subtrees or buckets subtrees) at the
discretion of the Consumer implementation, as opposed to the traditional
Iterator<DiffEntry> approach (still used to report diffs).

Adapted DiffBounds and DiffCount to use it, resulting in simpler code both
and over 100 less lines of code for DiffCount, both being potentially much
more efficient.

DiffTreeVisitor comes with over 97% unit test coverage.