bgpd: Make socket init separate, so unit tests work again.

* Separate out BGP socket initialisation from bgp_get, and make it an
  explicit function. Allows unit tests to work again and probably also
  benefits dry-run.
* bgpd.c: (bgp_get) move socket init out...
  (bgp_socket_init) to here
* bgp_main.c: and call it after dry-run.
* bgpd.h: (bgp_socket_init) add prototype
diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c
index 9c8eda8..ab27783 100644
--- a/bgpd/bgpd.c
+++ b/bgpd/bgpd.c
@@ -2055,13 +2055,6 @@
   bgp_router_id_set(bgp, &router_id_zebra);
   *bgp_val = bgp;
 
-  /* Create BGP server socket, if first instance.  */
-  if (list_isempty(bm->bgp))
-    {
-      if (bgp_socket (bm->port, bm->address) < 0)
-	return BGP_ERR_INVALID_VALUE;
-    }
-
   listnode_add (bm->bgp, bgp);
 
   return 0;
@@ -5341,6 +5334,15 @@
 }
 
 
+int
+bgp_socket_init (void)
+{
+  /* Create BGP server socket */
+  if (bgp_socket (bm->port, bm->address) < 0)
+    return BGP_ERR_INVALID_VALUE;
+  return 0;
+}
+
 void
 bgp_init (void)
 {