* 99% of the time, you'll only have localhost and the application will
be running on the first ident checked which will return a valid socket
almost immediately.
* Instead of continuing to search through each valid port before
returning valid data, we change the enumerate function to just find
the next valid port and return - so we can update the UI as soon as
we have the first result.
* Apparently Application.Exit() doesn't close immediately and can throw
an exception, leaving the UI open while the updater tries to run and
nothing works. Environment.Exit(0) should do better hopefully.