Implemented sponge block functionality.

Dry sponges absorb water that can be found within a 7 block taxicab
distance. Due to the specific implementation, a taxicab block iterator has
been added to help assist in the more complex calculation of which blocks
to absorb. The iterator has been designed for reusability.
Implemented explosions and some flint & steel behavior.

This commit adds the basics for explosions as well as the ability to
ignite TNT through the use of flint and steel. Flint and steel
implementation has been kept to a minimum to keep this commit as related
to explosions as possible. Some flint and steel behaviour still needs to
be implemented, such as only igniting flammable blocks.
Keep track of entity IDs across worlds (fixes #486 and #447).

Keeping an entity ID registry globally rather than for each world allows
entities to retain their IDs when they teleport between worlds. Entities
now do not change their ID between being created and being removed.
Print and use correct port after binding (fixes #571).

Previously GlowServer#getPort() would return the wrong port if the server
was instructed to bind to port 0 (any available port). This commit
resolves that issue by storing the port that the server actually bound to
and returning that. The bound port is also printed to the log.
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)
Added simple library downloading for database drivers (see #143).

Based partially on work by @mastercoms.
Removed redundant BlockType#onBreak method.
Various world loading improvements and fixes (closes #466).

- Added simple importing of Vanilla dimensions to separate worlds
- Improved error messages for unknown entities and tile entities
- Fixed three incorrect entries in ItemIds
Filter invalid item IDs (fixes #168).

Blocks which cannot exist as items are now filtered out as a part of inventory
handling, preventing client crashes. Some of these blocks are converted into
item equivalents, but most are discarded.
Improved "Outdated client/server" messages.

Also corrected a todo comment in GlowPlayer.
Put overworld decorators in their own package
Add UnderwaterDecorator
Add FlowingLiquidDecorator
Mark BlockDecorator as abstract
Made changes to UnderwaterDecorator
Add MushroomDecorator
Use diamond operator
Add TreeDecorator
Use an array to compare BlockFace(s) in FlowingLiquidDecorator
Remove obsoletes populators