[Value] Make 'cast' method smarter by being able to cast to baseclasses.
[Value] Make 'cast' method smarter by being able to cast to baseclasses.

Before this change, 'cast' relied on the SBValue.Cast method. This
method is dump, it just changes the type of the object but does not
really cast using language rules. This change is one level better than
being completely dump. This fixes the pretty printer for std::tuple
coming from libstdc++.

sivachandra/gala,sivachandra/gala