Implement explosions and some flint & steel behaviour

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 ensuring the block is flamable before igniting it.