Improve CLI usage, error & output messages

And add documentation of -t for the tabbed output
Update usage docs with new CLI flags
Allow comments in bcd files, comment read_barcodes

Now, lines in barcode files starting with the # or ; characters are
ignored. This means that you can comment mid-file and you won't break
the file. Also have written in-code comments & made small changes to the
code.
Astyle -A8 and some extra formatting
Use GSL combinations function

There was a bug in combinations, which I've fixed by using the GSL.
This pulls in a dependency on the GSL, but it's a fairly common library
to have in HPC/bioinformatics situations so I guess that's OK. Will
update docs later
Fix up GSL-related cmake stuff

- Remove annoying messages from FindGSL.cmake
- Specify a minimum version of GSL
Install libgsl0-dev in travis CI
Major algorithm bugfix - big increase in accuracy

We can now demultiplex perfectly, with 1 mismatch, barcodes even if they
are nested, so long as the remainder of read doesn't turn it into a
different barcode.
Fix misc formatting issues & dead code
Refactor processing read pairs in non-combo mode

Get rid of a lot of cruft from the single barcode mode. Now there's a
single function that processes a read pair in single barcode mode.
Remove the -u/-U flags; take name from out prefix

This removes the unbarcode read file CLI flag, instead the name of the
unknown output file is generated automagically from the output prefix,
for each output read mode.
Update TODO.md

Add some more todos
Clean up libdatrie code a bit

Remove file IO, use intptr_t as the value type
Refactor trie_retrieve->axe_trie_get, misc tiding

Refactor out trie_retrieve datrie function from the bulk of the axe
codebase. Also tidy a few misc function prototypes we'd deleted
Update docs with usage changes
Update dependencies & install in readme

Update the way we use CMake, also add stuff on the GSL being a
dependency.
Fix git version generation for non-tagged commits