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'd prefer getPlacingSound() asit'd be clearer and maybe sometime there exists a getBreakSound() or getDiggSound() method, too.