Fix for complex types and double types

Complex: give all inner classes the ability to be passed to be converted to parameters in a call

Double: change from Int to Num
Support Enums for some extra validation in calls and returns

Before enums were supported, we were passing plain strings, letting the
APIs validate the values.