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
rename Injector as Context, so its a context for a repo regardless of how it acquires the components
Merge branch 'master' into resurrect_hooks

Conflicts:
	src/cli/src/test/java/org/geogit/cli/test/functional/CLITestContextBuilder.java
Fixed support for classpath hooks and added unit tests
expose command context instead of repository.

Exposing the context instead of the repository object is more useful
and achieves the same purpose, plus, context.repository() may be removed
and by exposing the context we could check if the command is being run
inside a transaction (like in context() instanceof GeogitTransaction).
Prevent pushing to symbolic references