Disambiguate private field names in subclasses.

In a class hiearchy where B extends A, if A and B
both have a private field named 'foo', they are
not the same field.

This commit introduces disambiguation of such
cases with a suffix corresponding to the number
of ancestor classes of the owning class.
Add reasonable implem of String.format().
Add methods String{Builder,Buffer}.{indexOf,lastIndexOf,reverse}.
Add implem of Object.clone().
Fix implem of Throwable.toString().