Added WeightedRandom and Minor Changes

* Added WeightedRandom and IWeightedItem to re-implement Minecraft's
WeightedRandom class with improvements. We no longer have to cast the
output of WeightedRandom to another type. Our version has generic
arguments and preserves the type of the items provided. We also rely on
IWeightedRandom.getWeight() instead of having to extend
WeightedRandomItem and exposing a public field.
* Made several minor changes throughout our code to switch over to using
our WeightedRandom version where possible.
* Made several minor changes to fix some warnings. The Eclipse
configuration that comes with MCP has a lot of useful warnings disabled
by default - I enabled them after noticing the negative impact it was
having on our code.