Provided a connection to the appropriate port.

This removes the necessity of running `dab forward` to get USB connections to work.
This adds a dependency on adbkit.
Allow installer.getPluginMetadata() to return a value instead of a promise
Improved error handling.
Enhancements to new adbkit integration.

- Fix jshint errors
- Fix process never exiting after pushing
- Expose a symbol for detecting connected devices
- Destroy socket if it's not picked up by the connection
- Disable multiple connections per-host since we were just returning the same socket for each call to createSocket
Fix typo from prev adbkit commit (delete createSocket vs delete createConnection)
Fix jslint error in harnessclient
Make gulpfile use windows-compatible paths
Fix appharness.reload() not calling success callback on iOS

Was causing /launch to never send a response.
Use chrome.sockets.tcp.update({uri:}) to more efficiently pipe request payloads to files

20 megs new takes just a few seconds!
Added in some TODOs to tweak the code once the API can take in the
number of bytes to pipe.
Fix "Unable to bind to port" message when wifi is disabled.

Instead, display that you are bound to localhost, which is perfectly
fine for deploying via USB.
Add debug logging to HttpServer.js (disabled by default)
Update HttpServer to use chrome.sockets.tcp.pipeToFile.
Fix typo in error message (chrome-app-developer-tool-client -> harness-client)