Adding callbacks for create/destroy tunnel

I added hooks for when tunnels are created and destroyed, this helps me keep an external registry of localtunnels across multiple localtunneld instances.

I also let you specify the backend port directly in the client rather than doing discovery.  My frontend/backend security models are a bit different so I want to keep the client from having to connect directly to the frontend if it already knows where to find the backend.