sba: Create a SBAController that will manage the sbas for a BTS

The PollController is a friend of the SBAController and is allowed
to access the internal list. The list is hidden from everyone else.

This is done because the calculation of timeout should belong into
the PollController and not into the SBAController.
diff --git a/src/bts.cpp b/src/bts.cpp
index 3d0fc33..353451c 100644
--- a/src/bts.cpp
+++ b/src/bts.cpp
@@ -64,6 +64,7 @@
 BTS::BTS()
 	: m_cur_fn(0)
 	, m_pollController(*this)
+	, m_sba(*this)
 {
 	memset(&m_bts, 0, sizeof(m_bts));
 	m_bts.bts = this;
@@ -165,10 +166,10 @@
 	m_is_enabled = 0;
 }
 
-void gprs_rlcmac_pdch::free_resources(uint8_t trx, uint8_t ts)
+/* TODO: kill the parameter and make a pdch belong to a trx.. to a bts.. */
+void gprs_rlcmac_pdch::free_resources(BTS *bts, uint8_t trx, uint8_t ts)
 {
 	struct gprs_rlcmac_paging *pag;
-	struct gprs_rlcmac_sba *sba, *sba2;
 
 	/* we are not enabled. there should be no resources */
 	if (!is_enabled())
@@ -181,12 +182,7 @@
 	while ((pag = dequeue_paging()))
 		talloc_free(pag);
 
-	llist_for_each_entry_safe(sba, sba2, &gprs_rlcmac_sbas, list) {
-		if (sba->trx == trx && sba->ts == ts) {
-			llist_del(&sba->list);
-			talloc_free(sba);
-		}
-	}
+	bts->sba()->free_resources(trx, ts);
 }
 
 struct gprs_rlcmac_paging *gprs_rlcmac_pdch::dequeue_paging()