Differentiated Length() overloads.

- In UTF-32, both Length() overloads take the same type, but have different
behaviors. We can either change the types (make the code unit one take a
pointer), or change the names. The names have been changed. This is more
verbose, but we don't have to check against a null pointer this way.
Implemented UTF-32.