Refactor

Creating the new versions of the lz compression parsers. In this new
version, they are much shorter, since most everything is shared except
their loading. Still need to create pointer links and backpointers. Not
sure how those will work in the new factoring: it might still sit atop
the RunStorage and just add to elements instead of splitting them.
Refactor

- Moved away from using Tag - added a custom dependency property to use
instead.
- froze the geometries coming out of string.ToGeometry()
- Add string parsing as a RunParser
- fixed bug in RunStorage.CreateElements: startIndex was missing the
first element if it started before the list, causing the first element
to be colored wrong.
- added interpretation for pointers
- added an interface for DataRuns, and created two implementations for
static and dynamic length.
- many other updates as I move code into the DataRun system from the
previous PartialParser system.
Refactor

- added underline and hovertext support
- removed dead code
- fixed the Header RunParser's flyweight choice
- fixed the string escape interpretations
- fixed the string search
Refactor

Almost done with the refactor. Added support for backPointers, though
now there are pointers leading to places where they before could not.

Moved the PointerMapper into Gba.Pointers, since it's more closely
related to the PointerParser.

Renamed PCS2 to PCS, now that it is the primary implementation.
Filter Pointers

Adding a filtering option, so the header can prevent pointers from
leading into it.
Add locking to remove threading issues.

In just a few places, parsing the ROM in a background thread can lead to
some race conditions between generating lists and adding to them. This
can be remedied by locking the places where the list is modified or a
child list is created.
Cleanup

With the refactoring complete, a small amount of cleanup keeps the code
lean.