Add support for variable block sounds

This adds support for blocks to override the default placement sound with both variable volume and pitch. I created a new BlockSound class that encapsulates these values and can be overridden should a block need variable volume/pitch/sound etc. The pitch has a slight random deviation of +/- 0.25.
I guess if we were to have a world.playSound() method we would also have to add a class equivalent to GlowSound to Bukkit, so that the implementation doesn't leak through to the API. The current method works.