fixes join mode

This is a rewrite of the join mode. The changes include:

 * Rather than iteratively using `asprintf` to create the new long sequence
   we now call `malloc` once.
 * Ditch the crude handwritten implementation of a dynamically growing
   array. Instead a C wrapper for `std::vector<seq_t>` is used.
 * The name of a joined sequence is now the filename.
 * Of a sequence name only the first nine characters get printed.
 * Adds and fixes documentation all over the place.
 * Renames `sequence.c` to `sequence.cpp` to reflect the fact that its
   code is actually C++.