Implement transceiver interface

This change introduces a new block 'TRX Interface', which is aimed
to provide an interface for external applications, such as Osmocom
MS side stack implementation - OsmocomBB. Currently one allows to
exchange raw GSM bursts between GR-GSM and other applications.

Moreover, there is a new 'trx.py' application, which implements a
simple follow graph, where all demodulated bursts are being sent
to external application via UDP link provided by 'TRX Interface'.
OsmoTRX (Osmocom's fork of OpenBTS transceiver) like control
interface is used to initialize, configure, start and stop the
application. Messages on this interface are human readable ASCII
strings, which contain a command and some related parameters.
diff --git a/grc/trx_interface/gsm_trx.xml b/grc/trx_interface/gsm_trx.xml
new file mode 100644
index 0000000..cf882ef
--- /dev/null
+++ b/grc/trx_interface/gsm_trx.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0"?>
+<block>
+  <name>TRX interface</name>
+  <key>grgsm_trx_interface</key>
+  <import>import grgsm</import>
+  <make>grgsm.trx($remote_addr, $base_port)</make>
+
+  <param>
+    <name>base_port</name>
+    <key>base_port</key>
+    <value>5700</value>
+    <type>string</type>
+  </param>
+
+  <param>
+    <name>remote_addr</name>
+    <key>remote_addr</key>
+    <value>127.0.0.1</value>
+    <type>string</type>
+  </param>
+
+  <sink>
+    <name>bursts</name>
+    <type>message</type>
+  </sink>
+
+  <doc>
+      OsmoTRX like UDP interface for external applications.
+
+      There are three UDP sockets: CLCK, CTRL and DATA.
+      Give a base port B (5700 by default), the SCH clock
+      interface is at port P=B. The TRX-side control interface
+      is on port P=B+100+1 and the data interface is on an odd
+      numbered port P=B+100+2.
+
+      Indications on the SCH Clock Interface (CLCK)
+      The SCH clock interface is output only (from the radio).
+      CLOCK gives the current value of the BTS clock to
+      be used by external applications. The indications are
+      sent whenever a transmission packet arrives that is too
+      late or too early.
+
+      Commands on Control Interface (CTRL)
+      The control interface uses a command-response protocol.
+      Commands are NULL-terminated ASCII strings. Each command
+      has a corresponding response. This interface isn't handled
+      by this particular block, and should be implemented outside.
+
+      Messages on the Data Interface
+      Messages on the data interface carry one radio burst per
+      UDP message.
+
+      Received Data Burst:
+      1 byte timeslot index
+      4 bytes GSM frame number, big endian
+      1 byte RSSI in -dBm
+      2 bytes correlator timing offset in 1/256 symbol steps,
+          2's-comp, big endian
+      148 bytes soft symbol estimates, 0 -&gt; definite "0",
+          255 -&gt; definite "1"
+
+      Transmit Data Burst:
+      1 byte timeslot index
+      4 bytes GSM frame number, big endian
+      1 byte transmit level wrt ARFCN max, -dB (attenuation)
+      148 bytes output symbol values, 0 &amp; 1
+  </doc>
+</block>