This PR is a chore re-organizing the CoreConnectionToClient to remove all business logic from it.
Summary:
CommandRunner: this is a simple function that translates "string" commands into callable functions. It uses a convention of the prefix of the api to route to the right "Target". Targets are Core, Session, Tab, FrameEnvironment, and "Events" (see next)
RemoteClientEvents: AwaitedEventTarget was renamed and moved out of session. It should be transparent and unknown to session. For "jsPath" oriented events, this class will delegate to the target
Session.close and Session.terminate are merged and have a "force" parameter
Session.close is now logged into commands database, along with the keep alive result if appropriate
Session.create is now Core.createSession: this was a tricky one since it's one of the only patterns that doesn't have an object to route to. It also has a return type of ISessionMeta (sessionId, tabId, frameId) that doesn't fit well into serializing a session (its more serializing the first tab). For those reasons, I thought it made more sense to have a Core.createSession route to static method Session.create() and then return the serialized tab information.
This PR is a chore re-organizing the CoreConnectionToClient to remove all business logic from it.
Summary: