Separation of socket bind operation from the run method

I ran into a case where I needed to get the bound address before starting the manager server (it made my life easier that way). So I've included a simple api change, create a bind method that one would call before run. If not run will call it automatically.