Updated build dependencies.
Added copy of license as required.
Dependency updates.
Ported a couple generic tests.
Quick IDE reformatting of old code.

- Does the history matter much going forward when everything is being rewritten? I didn't think so.
Merge branch 'reformat' into mockito
Missed a rename in pom.
Added log4j2 configuration based on log4j 1.x config.
Some work in #3 and #4.
Migrated to log4j2.

- Closes #3
Just the beginning of static code analysis. See #6.
Final keywords were easily applicable. #6
Duplicate throws exceptions. #6
More exceptions marking that was unneeded. #6
Empty catch blocks updated where possible. #6
Various fixes and clean-ups. See #6.
Fixed up probable bugs. #6
JavaDoc fixes. #6
For Each loops used where possible (at least automatically). #6
Boxing and unboxing simplified. #6