Use proper conversion for nested types (tuple/map/list/function)

Using just From/ToPyObj means only builtins can be converted, but we want
ClassWrapper to be converted as well. So use SelectFrom/ToPyObj::type where available
gcc: Fix missing include file