Switch our ICU JNI over to C++ and tidy up a little.

The big ugly files (implementing NativeCollation and NativeConverter), I've
just done the minimum necessary for them to compile under a C++ compiler. For
the small ones, I've been through them more thoroughly, removing duplication
and the like.

I only came across one bug; a failure path in BidiWrapper that would have
leaked.
15 files changed