Switch to using type with methods

Avoid those global variables
Use a waitgroup to block reExec until ready
Temporary means of waiting for serving ready
Helps if we add the created listeners to the collection.
Block main gorouting in parent to allow re-exec

Otherwise the process exits before it can re-exec.