Progress, refactorings and tests.

Since my last post I haven't spent as much time as I'd like coding, since getting a win32 development environment setup was a bigger time sink than I expected, but I've still managed to stay pretty close to the schedule. The main feature for the next week, once I'm done with the charset-level stuff will be Iterators, which will finally enable NFG 'literals' in PIR source, for which I have added, failing, tests the past week.

But, after wrestling MSVC into submission, I've also added some basic NFG-awareness into various places of the parrot String API. The unicode cclass functions, for example, now deal with NFG characters by returning the data for the first codepoint in the grapheme, which isn't completely accurate and will have to be revisited later, but should work out most of the time.
Additionally, "replace" and "concat" are nfg-aware in ICU-enabled builds, which prompted some changes to the grapheme-handling API. The most noticeable one would be the cloning semantics and an overall better handling of NULL grapheme tables.
There's still quite a bit of internals work to do, tests to write and there are probably bugs lurking in the code, but usability looms over the horizon. Soon, we will be able to create and manipulate NFG-encoded strings with the standard parrot APIs, and we'll finally find out if they're as big a win as we hope they'll be.