Some code quality fixes

Please review the code quality changes I made:

* Copyright statement on all files (tests excluded)
* Indent using spaces instead of tabs
* Upgrades JUnit to version 4.11 and removed the Hamcrest dependency. Hamcrest is part of JUnit 4.11
* Some minor changes like removing unnecessary blank lines, added access modifiers, etc