Implemented device auto-discovery

There is a breaking change in the constructor/connect signatures to support this.