prevent infinite recursion on inspecting a generic function type

when the function's parameter is the generic function type for itself,
the issue occurs.
tweak the output of semantics_context::dump()
remove type instantiation of lambda object as tuple

lambda's type should be distinguished from tuple and it should be a
generic function type.  Though both generic function type and tuple are
implemented with struct, they have the different semantics as type each
other.