Injector API

Injector presents a communication bridge between app and debugger.
It provide the access to:
  1. 'require' function (that isn't global and rarely scoped)
  2. socket connection (that used V8 debugger protocol in messages)
    as main communication channel between app and debugger.
It will be useful for injection of plugins and extentions.
It is first part of 'Console API', 'Profiler API', 'HeapProfiler API' extensions.
This means the callers have to check `needsConnect` before calling `connect`, otherwise they will get an error even though there is no error.

IMO `needsConnect` should be an implementation detail of `InjectorClient` and it should be possible to call `connect` multiple times. 

Correct me if my understanding is wrong.