Implemented basic block physics (see #40).

Adds capabilities for basic block physics as detailed below, as well as a
base for future block physics expansion.

This commit adds the following physics cases:
- Falling blocks (sand, gravel, anvil, and dragon egg) - the blocks are
  moved downwards directly instead of spawning entities
- Tower blocks (cacti and sugar cane)
- Attached blocks (carpet, dead bushes, fire, melon stem, pumpkin stem,
  snow, tall grass, torch, and redstone torch)
Add basic random blocks tick
Add BlockCocoa, move random as protected static field to BlockType
Add BlockCrops
Add BlockMushroom
Add BlockSapling
Add BlockStem, remove BlockMelonStem and BlockPumpkinStem
Add BlockNetherWart
Add BlockSoil
Call BlockFadeEvent when soil turns back to dirt
Fix typo in BlockMushroom
Add BlockGrass (grass spread and decay)
Fix equality checks
Use an active chunks set for the block ticking
Lightning already have chunk coordinates
Some fixes
Improvements with growth rate
Fix my rebase mess
Changes to conform to latest commit on master