Make more use of DefineConsoleMethod

Resubmission of #887 with some fixes.
Pretty sure this is back in my commit, but for some reason GH is still showing it.