Start working on that gcj test

Added some string functions and fixed a couple bugs.
Improve the speed of some static analyses

Before was using some bad iteration strategies for
fixed-point computation: LIFO for definedness analysis
(very bad), and FIFO for type analysis (bad).

Switch both of them to use a priority queue that picks the
block with the lowest index; this is an order of magnitude
better on the new gcj test but still is fairly slow.