keep Ctrl connections open for bsc, msc and nitb objects

The pattern to use 'with' to keep a CTRL connection open adds indents to
every test script that wants to avoid multiple reconnections to the
CTRL. Instead, keeping a single open connection that is cleaned up on
{bsc,msc,nitb} object cleanup ensures that a) the program started up
successfully and opened a CTRL port, b) always has a CTRL open without
having to worry about it and c) keeps test scripts less
complex/indented/crufted.

(These are all current users of the OsmoCtrl API.)

Change-Id: I53fedbe569c5ccbc4b1a17dafe1f8d1bb8200b24
diff --git a/src/osmo_gsm_tester/testenv.py b/src/osmo_gsm_tester/testenv.py
index b3db84f..dc7aee0 100644
--- a/src/osmo_gsm_tester/testenv.py
+++ b/src/osmo_gsm_tester/testenv.py
@@ -194,7 +194,9 @@
         from .obj.nitb_osmo import OsmoNitb
         if ip_address is None:
             ip_address = self.ip_address()
-        return OsmoNitb(self, ip_address)
+        nitb_obj = OsmoNitb(self, ip_address)
+        self.register_for_cleanup(nitb_obj)
+        return nitb_obj
 
     def hlr(self, ip_address=None):
         from .obj.hlr_osmo import OsmoHlr
@@ -230,7 +232,9 @@
         from .obj import msc_osmo
         if ip_address is None:
             ip_address = self.ip_address()
-        return msc_osmo.OsmoMsc(self, hlr, mgcpgw, stp, ip_address)
+        msc_obj = msc_osmo.OsmoMsc(self, hlr, mgcpgw, stp, ip_address)
+        self.register_for_cleanup(msc_obj)
+        return msc_obj
 
     def bsc(self, msc, mgw, stp, ip_address=None):
         from .obj.bsc_osmo import OsmoBsc