VTY: improve VTY prompt and make sure exit/end works everywhere

Some nodes below 'config' didn't have ournode_exit / ournode_end,
and thus were not able to properly perform this function.  exit should
always only go back one level, while end drops us back to ENABLE_NODE.

The prompt now represents the nesting level, and there's one consistent
space after the final prompt character (typically #).
diff --git a/openbsc/src/gprs/gb_proxy_vty.c b/openbsc/src/gprs/gb_proxy_vty.c
index 574f45f..bfa1f3b 100644
--- a/openbsc/src/gprs/gb_proxy_vty.c
+++ b/openbsc/src/gprs/gb_proxy_vty.c
@@ -40,7 +40,7 @@
  */
 static struct cmd_node gbproxy_node = {
 	GBPROXY_NODE,
-	"%s(gbproxy)#",
+	"%s(config-gbproxy)# ",
 	1,
 };
 
diff --git a/openbsc/src/gprs/sgsn_vty.c b/openbsc/src/gprs/sgsn_vty.c
index f4a8083..1fc0b41 100644
--- a/openbsc/src/gprs/sgsn_vty.c
+++ b/openbsc/src/gprs/sgsn_vty.c
@@ -106,7 +106,7 @@
 
 static struct cmd_node sgsn_node = {
 	SGSN_NODE,
-	"%s(sgsn)#",
+	"%s(config-sgsn)# ",
 	1,
 };
 
diff --git a/openbsc/src/libbsc/bsc_vty.c b/openbsc/src/libbsc/bsc_vty.c
index d7cdee6..b91304d 100644
--- a/openbsc/src/libbsc/bsc_vty.c
+++ b/openbsc/src/libbsc/bsc_vty.c
@@ -97,25 +97,25 @@
 
 struct cmd_node net_node = {
 	GSMNET_NODE,
-	"%s(network)#",
+	"%s(config-net)# ",
 	1,
 };
 
 struct cmd_node bts_node = {
 	BTS_NODE,
-	"%s(bts)#",
+	"%s(config-net-bts)# ",
 	1,
 };
 
 struct cmd_node trx_node = {
 	TRX_NODE,
-	"%s(trx)#",
+	"%s(config-net-bts-trx)# ",
 	1,
 };
 
 struct cmd_node ts_node = {
 	TS_NODE,
-	"%s(ts)#",
+	"%s(config-net-bts-trx-ts)# ",
 	1,
 };
 
diff --git a/openbsc/src/libmgcp/mgcp_vty.c b/openbsc/src/libmgcp/mgcp_vty.c
index 016ad14..314faa8 100644
--- a/openbsc/src/libmgcp/mgcp_vty.c
+++ b/openbsc/src/libmgcp/mgcp_vty.c
@@ -51,13 +51,13 @@
  */
 struct cmd_node mgcp_node = {
 	MGCP_NODE,
-	"%s(mgcp)#",
+	"%s(config-mgcp)# ",
 	1,
 };
 
 struct cmd_node trunk_node = {
 	TRUNK_NODE,
-	"%s(trunk)#",
+	"%s(config-mgcp-trunk)# ",
 	1,
 };
 
diff --git a/openbsc/src/libmsc/vty_interface_layer3.c b/openbsc/src/libmsc/vty_interface_layer3.c
index 47a141d..7202756 100644
--- a/openbsc/src/libmsc/vty_interface_layer3.c
+++ b/openbsc/src/libmsc/vty_interface_layer3.c
@@ -777,7 +777,7 @@
 
 static struct cmd_node mncc_int_node = {
 	MNCC_INT_NODE,
-	"%s(mncc-int)#",
+	"%s(config-mncc-int)# ",
 	1,
 };
 
@@ -864,6 +864,8 @@
 	install_element(CONFIG_NODE, &cfg_mncc_int_cmd);
 	install_node(&mncc_int_node, config_write_mncc_int);
 	install_default(MNCC_INT_NODE);
+	install_element(MNCC_INT_NODE, &ournode_exit_cmd);
+	install_element(MNCC_INT_NODE, &ournode_end_cmd);
 	install_element(MNCC_INT_NODE, &mnccint_def_codec_f_cmd);
 	install_element(MNCC_INT_NODE, &mnccint_def_codec_h_cmd);
 
diff --git a/openbsc/src/osmo-bsc/osmo_bsc_vty.c b/openbsc/src/osmo-bsc/osmo_bsc_vty.c
index 276a490..26f9229 100644
--- a/openbsc/src/osmo-bsc/osmo_bsc_vty.c
+++ b/openbsc/src/osmo-bsc/osmo_bsc_vty.c
@@ -41,7 +41,7 @@
 
 static struct cmd_node msc_node = {
 	MSC_NODE,
-	"%s(msc)#",
+	"%s(config-msc)# ",
 	1,
 };
 
diff --git a/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c b/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c
index 1646b59..220e960 100644
--- a/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c
+++ b/openbsc/src/osmo-bsc_nat/bsc_nat_vty.c
@@ -47,19 +47,19 @@
 
 static struct cmd_node nat_node = {
 	NAT_NODE,
-	"%s(nat)#",
+	"%s(config-nat)# ",
 	1,
 };
 
 static struct cmd_node bsc_node = {
 	NAT_BSC_NODE,
-	"%s(bsc)#",
+	"%s(config-nat-bsc)# ",
 	1,
 };
 
 static struct cmd_node pgroup_node = {
 	PGROUP_NODE,
-	"%s(paging-group)#",
+	"%s(config-nat-paging-group)# ",
 	1,
 };
 
@@ -1042,6 +1042,8 @@
 	install_element(NAT_NODE, &cfg_nat_no_pgroup_cmd);
 	install_node(&pgroup_node, config_write_pgroup);
 	install_default(PGROUP_NODE);
+	install_element(PGROUP_NODE, &ournode_exit_cmd);
+	install_element(PGROUP_NODE, &ournode_end_cmd);
 	install_element(PGROUP_NODE, &cfg_pgroup_lac_cmd);
 	install_element(PGROUP_NODE, &cfg_pgroup_no_lac_cmd);