Fix C sample program
Convert 'const Obj' to 'Obj'
Convert 'const ByteBuf' to 'ByteBuf'
Fix the invocant type on method typedefs.

Method typedefs, like method invocation inline functions, are defined
for each class in the inheritance chain.  Prior to this fix, the "self"
type in the typedef was the type of the last concrete implementor
rather than the type of the invocant.
Remove un-const-ing from method invocation funcs.

Method invocation functions have been casting away const-ness by
accepting `const prefix_Foo *self` as the invocant but then invoking
the retrieved function pointer with `self` cast to `(prefix_Foo*)`.
This was necessary to avoid warnings from "const CharBuf" immutable
strings -- but now our String type is immutable without requiring
`const`, allowing us to improve type safety by removing the cast.
Switch String#Hash to SStrIter_Next_t

Now that method typedefs are fixed, we don't have to fetch the method
pointer form the implementing class.