Add a built-in REPL interface

When enabled, this provides an extended REPL interface so that the running instance can be examined and controlled.

It has a built-in $('component') to access any component, but also allows any of them to add their own extensions to the REPL.

It's designed such that a custom streams can be passed in for remote-control REPLs.