Tiered block damage, shovel, refactor blocks to common basedon templates.
Cleanup some .block comments.
Add World.getAllFacets()
Merge PR #1327 by @Josharias - tiered block damage
Support for allowing blocks to drop different items (or quantities) based on the tool damage type that was used to break it.

Also fixed a bug in serialization of MappedContainer fields with null values.
Merge remote-tracking branch 'upstream/develop' into develop