Miscellaneous changes

* Made synchronzied objects final
* Simplified some boolean expressions (such as in equals())
* Removed semicolon from the end of enums
Adding Gradle wrapper jar
Using ThreadLocalRandom instead of new Random

General cleanup.
Adding readme