Hooks, API abstractions improvements, stop using AOP for component interceptors

This (rather large) patch combines three branches, as they needed each other to proceed, in order to:
- Add command hooks, by which Java classes, JVM scripts (i.e. js), and shell scripts can be added as pre/post command hooks
- Stop using Guice AOP to cover some cross cutting concerns, as it will impede building for android due to lack of bytecode manipulation
- Get rid of the proliferation of Guice injection knowledge throughout all commands, in favor of a cleaner API, where a Context is given to every command as a provider for the different kinds of repository components