Introduction of pokemon string parsing

Uses a rather dumb implementation right now - looks for at least 3
letters in a row within the proper range. Doesn't use pointers, doesn't
assume very much accuracy. Seems to have lots of false positives, but
all the important looking strings are in place.
improve string parser

Parser has less false positives by recognizing that strings end with
0xFF. Strings can now provide interpretations for pointers. This looks a
little strange for arrays, but works well for single strings.
improve string parser

The string parser now caches interpretations after the first time
they're requested. This speeds up performance, removes a few bugs, and
prevents degredation of startup performance by not pre-computing them
all.

The parser now recognized strings that start with a single letter and a
space, such as "A ..." or "I ...".
GUI Improvements

Max column count increased to 48 now that I have proof of data wider
than 32 (item data is ~44 bytes).

When showing / hiding the interpretation pane, the window will attempt
to auto-resize to keep the data aligned the same.