Add T4 bit map compression routines

Add bit map encoder and decoder functions: decoder is fully functional
while encoder is good enough for testing - no backtracking to find
the best possible compression is implemented. If somebody is willing to
implement MS side of EDGE than this has to be expanded.
Add corresponding tests.
N. B: the encoding is implemented according to ETSI TS 44.060 which is
slightly different from T4 used for fax according to CCITT G31D (RFC 804).

Ticket: OW#2407
Sponsored-by: On-Waves ehf

Signed-off-by: Max <msuraev@sysmocom.de>
diff --git a/tests/Makefile.am b/tests/Makefile.am
index a4a6b2e..571e87b 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -12,7 +12,7 @@
 		 loggingrb/loggingrb_test strrb/strrb_test              \
 		 vty/vty_test comp128/comp128_test utils/utils_test	\
 		 smscb/gsm0341_test stats/stats_test			\
-		 bitvec/bitvec_test msgb/msgb_test
+		 bitvec/bitvec_test msgb/msgb_test bits/bitcomp_test
 
 if ENABLE_MSGFILE
 check_PROGRAMS += msgfile/msgfile_test
@@ -42,6 +42,9 @@
 bitvec_bitvec_test_SOURCES = bitvec/bitvec_test.c
 bitvec_bitvec_test_LDADD = $(top_builddir)/src/libosmocore.la
 
+bits_bitcomp_test_SOURCES = bits/bitcomp_test.c
+bits_bitcomp_test_LDADD = $(top_builddir)/src/libosmocore.la
+
 conv_conv_test_SOURCES = conv/conv_test.c
 conv_conv_test_LDADD = $(top_builddir)/src/libosmocore.la
 
@@ -136,7 +139,7 @@
              loggingrb/logging_test.err	strrb/strrb_test.ok		\
 	     vty/vty_test.ok comp128/comp128_test.ok			\
 	     utils/utils_test.ok stats/stats_test.ok			\
-	     bitvec/bitvec_test.ok msgb/msgb_test.ok
+	     bitvec/bitvec_test.ok msgb/msgb_test.ok bits/bitcomp_test.ok
 
 DISTCLEANFILES = atconfig