dexinfo was getting cut off

there were some char translations missing from the pcs3-w.ini file. To
find them, I formalized a StringFactory capable of providing the
StringDecoder and updated the window to not blap the breadcrumb when
you're reading a different interpretation of the same file.

Also made a few misc edits to scripts to prep for making all the scripts
follow the same conventions.
Remove Evil PCS Singleton

Singletons are evil. There was a hard-to-detect bug that snuck into the
code a while ago that manifests when you try typing a string after
reloading. The PCS ended up with 2 event handler callbacks - one new one
and one old one that never got removed because of its singleton status.
It called up the chain and eventually reached a higher level that _was_
removed, causing the app to come crashing down on itself.

To fix this problem, I removed the singleton and added explicit
dependencies in the places that need the PCS.
first revision of dexorder

dex order feels like it's backwards. It's a list of all species, listing
what order they appear in the dex. This allows to to quickly see, for a
species, where it is in the dex. A more natural way to view the list
would be: for a index in the dex, see what species is there. Eventually
I may want some kind of custom display for this to make it possible to
edit this list without losing your mind.

Now that the dexorder is known, I can use it to list pokemon names as
headers for the dex data.
Cleanup scripting

made all the scripts follow some conventions to hopefully make them
easier to follow. Added a _setup script (named to execute first) and
added some "constants" to it for the other scripts to use. Made the
BuildableArray enumerable and gave it an "each" method so IronRuby could
run for loops on it (for epic).
update epic to evolve pokemon

- moved setup scope. Lazy is "smarter" except that I want app.status
available for debugging purposes on scripts.
- scripting popup is smarter now - doesn't popup with the "last result"
whenever there is no result.
- epic script now updates pokemon species by evolving it to the first
available evolution, twice.
- removed redundant names from epic, as that's a bad coding practice.
- In trying to write the update for epic, I noticed all sorts of trouble
with BuildableArray. I've removed it and replaced it with a simpler
collection of BuildableObject[]. This means that BuildableObject doesn't
need to change locations anymore, so it can expose its location,
removing the need for the strange destinationof method.
- fixed a bug in the dexinfo label: it should fail for any number less
than 1, not any number less than 0.
- With BuildableArray gone, I need a new labeler. ScriptedDataTypes has
absorbed this.
- BuildableObject still needs some way to by dynamic as its data
changes: so it uses a ChildReader and a Builder2 to build arrays each
time they are requested. It does, however, assume static length. Under
the current system, data can change and move, but the structure of the
data once created must remain relatively static.
cleanup

That last change was really big - cleanup some dead code after.