Make more use of DefineConsoleMethod

Resubmission of #887 with some fixes.
It can be done with default arguments and accepting strings for later conversion, but I agree, it's not elegant. Maybe in the future we should revise some of these overloaded functions to have separate names for each overload.