tbf: Clean up gprs_rlcmac_dl_tbf::handle()

Avoid passing tons of params to internal helper function
tbf_nel_dl_assignment() in order to either fetch again the ms object or
create a new one. Let's instead create the ms function earlier if needed
and fill it with all the discovered information prior to calling the
helper function. This provides cleaner code and also better log output.

This way we also avoid trying to fill the MS twice and unneeded
getter+setter for TA.

tbf::imsi(): There' always an ms, so simply forward call to
ms()->imsi().

We can also get rid of assign_imsi, since the modified code is the only
place where it's used and there's already some code in place there to
update the MS. We instead merge it with set_imsi and keep the
duplication code to catch possible bugs from callers.

Move merge_and_clear_ms from tbf class to GprsMS, where it really
belongs.

Change-Id: Id18098bac3cff26fc4a8d2f419e21641a1f4c83b
diff --git a/src/gprs_ms.h b/src/gprs_ms.h
index 412a400..fbb46f6 100644
--- a/src/gprs_ms.h
+++ b/src/gprs_ms.h
@@ -68,7 +68,7 @@
 
 	void set_callback(Callback *cb) {m_cb = cb;}
 
-	void merge_old_ms(GprsMs *old_ms);
+	void merge_and_clear_ms(GprsMs *old_ms);
 
 	gprs_rlcmac_ul_tbf *ul_tbf() const {return m_ul_tbf;}
 	gprs_rlcmac_dl_tbf *dl_tbf() const {return m_dl_tbf;}
@@ -144,6 +144,7 @@
 	bool app_info_pending;
 
 protected:
+	void merge_old_ms(GprsMs *old_ms);
 	void update_status();
 	GprsMs *ref();
 	void unref();