Feature/dependency cleanup

Depends on #236 

This uses the maven-dependency-plugin to enforce that we have no used undeclared dependencies or unused declared dependencies. We also use the maven-enforcer-plugin to enforce that all dependencies are not SNAPSHOTs, transitive dependencies are resolved to higher or equal depenencies, and that we define all plugin versions.

See best practices at
http://blog.florian-hopf.de/2014/01/analyze-your-maven-project-dependencies.html?m=1
and
http://www.kyleblaney.com/maven-best-practices/