ABT tag.
Yay!

Now rendering world to the whole screen. (Not the whole world)
One I/O-only line.
Added curses library
Wheeeeeeeeee!

This damned monad transformer took all day for me to figure out.

Now I'm going to bed, and I'm going to sleep happy.
Beginning to converge on an efficient screen drawing implementation.

It took three days for me to realize that it would be more efficient
to generate a placement function than to do the recalculation at every
chunk.

Given that, the placemenet generator `chunkPlacer` will -- given the
screen size and offset -- translate, crop, and place any chunk that is
given to it without doing the screen calculations again the next step
is to generalize this placer so that it can make pure rendering
instructions which can either be printed, or actually rendered.
Generalized chunkPlacer

Having the general instructions now, I can choose whether to render or
print instructions for the same chunk -- this *might* make debugging
the cursed curses curser errors I've been getting easier.
Haskell saved me.

I was thinking "sloppily" about the coordinate types.  The assumption
that the coordinates would fit into `Int`s was flawed.  I still
disagree with the ncurses assumption that coordinates need `Integer`
types (8-bit machines tend not to have text screens larger than
256x256), so will continue to use `Int` for these, translating only at
the last moment.
Testing rendering of single chunks into the right place.

Note that the row subtraction, and the odd behaviour of clearScreen
with regards to the last character are specifically to avoid a crash
which I have observed when using `drawString` to put a character in
the last spot.  I will research whether this is an ncurses,
haskell-ncurses, or greyson-using-ncurses bug later.
Map is still hardcoded, very slow, but works.

Now I have full navigation -- which is terrible because of how slow it is.

But that's why profilers exist.
Fixed build (somewhat) and made slight speed improvement.

It occurs to me that I didn't need doubly-nested functions.  Now I'm
going to tune the 'chunkTopLayer' function a bit.
Serious speed improvement.

By manipulating the bytestring first, and doing all checks *before*
translating it to the block format list, this has achieved a really
significant speed increase.

Thank you to the profiler for showing me a place that I could make
this change.
Tried a foldr... not very good.
Include the final chunk on the right side.
ABANDONED using foldr to speed up getting chunk top layers.
COMPLETE: Switch over to curses

Feature added: live navigation
   This is why I switched to using ncurses

Feature removed: color
   This will be added back, but having live nav is a stronger feature
   than having color
ABANDONED: First NBT parse attempt

A failed first attempt at clean NBT parsing.