UTF8 decoding now checks for all conceivable invalid and edge cases. Unicode encoding and decoding unit tests complete