fix octphy, fix conf, improve logging

Clearly separate the kinds of BTS hardware the GSM tester knows ('type') from
the NITB's bts/type config item ('osmobsc_bts_type' -- not 'osmonitb_...' to
stay in tune with future developments: it is the libbsc that needs this).

For BTS hardware kinds, use the full name of the binary for osmo driven models:
osmo-bts-sysmo, osmo-bts-trx, osmo-bts-octphy.

Change-Id: I1aa9b48e74013a93f9db1a34730f17717fb3b36c
diff --git a/src/osmo_gsm_tester/util.py b/src/osmo_gsm_tester/util.py
index 61d0f6e..e132e21 100644
--- a/src/osmo_gsm_tester/util.py
+++ b/src/osmo_gsm_tester/util.py
@@ -74,6 +74,7 @@
         return dict2obj(self.obj[key])
 
     def __getattr__(self, key):
+        'provide error information to know which template item was missing'
         try:
             return dict2obj(getattr(self.obj, key))
         except AttributeError:
@@ -82,19 +83,9 @@
             except KeyError:
                 raise AttributeError(key)
 
-class ListProxy:
-    'allow nesting for DictProxy'
-    def __init__(self, obj):
-        self.obj = obj
-
-    def __getitem__(self, key):
-        return dict2obj(self.obj[key])
-
 def dict2obj(value):
-    if isinstance(value, dict):
+    if is_list(value) or is_dict(value):
         return DictProxy(value)
-    if isinstance(value, (tuple, list)):
-        return ListProxy(value)
     return value