Implement 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.