Extract JavaScriptShellConsoleProvider from JavaScriptShellConsole.

JavaScriptShellConsoleProvider does not depend on the internal state of
JavaScriptShellConsole. Extract it as a separate object.