Reworked generator to do generation in steps

Generator now has a stepGenerate() instead of a generate() method.  The
stepGenerate() method applies a single layer only, and modifies a
tilemap instead of creating a new one.  This is to allow visualization
of the generation.

Additionally, the resolution method has also changed.  Instead of
passing in a fully sized matrix alongside a resolution, a smaller matrix
is passed in instead.  This is so that layers do not have to care about
resolution when performing their action.