Added 'insert' command to insert arbitrary features in a simplified way
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.
Added javadocs to explain private methods of FindCommonAncestor.
Implemented minor performance gains.
Merge pull request #699 from jdgarrett/lca-refactor

Refactor out graph algorithms and build Berkeley Graph Database
Merge pull request #670 from volaya/insert

Add 'insert' command to insert arbitrary features in a simplified way
Use of a static DataStoreFactory in tests can cause pseudo random failures on parallel builds
Remove Guice AOP and dependency injection details from commands.

Remove the need for all commands to know about the AOP framework
being used. All of them are given an instance of org.geogit.api.Injector
from which to have direct access to the repository objects
like Object/Staging/Graph/Config/RefDatabase, WorkingTree, Index, etc

The API is hence made clearer and more succint, leaving the actual
dependency injection details to be handled only by the org.geogit.di
package.
Initial support for pre/post command hooks
some improvements to hooks
Working on supporting classpath hooks and a call chain
fixing rebase conflicts
Implement hooks without AOP/bytecode manipulation