Modify Time.unit type to UnitsTime enum

Also adds the TimeI implementation for the Python and C++
language bindings, including object factories and IceMapper code.
The Java implementation is also an implementor of `ModelBased` so
that IceMapper can convert back and forth to ome.model.units
instances.

For the next unit implementation (i.e. `Length`), it will likely
be better to introduce code generation of the `ome.model.units`
implementations rather than hand-writing them.

Note: a workaround was needed for the generation of unique
constant names in Ice since constants must vary in more than just
capitalization which fails for SI prefixes like M and m.