Make more use of DefineConsoleMethod

Resubmission of #887 with some fixes.
I actually think this is fine - you trade checking `argc` for checking whether args are `""`. I'd prefer to forge ahead with removing `ConsoleMethod` now, and save more intrusive changes for the future.