Major re-write of path data structure and output format

 *WORK IN PROGRESS*

I've begun re-writing how we store path data. This should remove a large source
of bugs, simplify the code and enable others to use our output format.
The new output format uses a JSON header which is nice.

Added libs/cJSON library (MIT)

split code into subdirectories:
  src/global
  src/basic
  src/paths
  src/graph
  src/graph_paths
  src/tools
  src/commands
  src/main
Run checks in debug command, fix bugs found
Convert ctx_thread + graph_walker to new GPath

ctx_thread.c: Converted to new graph path file format
graph_walker.c: Coverted to new GPathFollow
gpath_save.c: add more info to header, including system info and commands used
generate_paths.c: store kmer length
Convert all commands to use new ctp format + data structure

Add missing src/paths/* and src/graph_paths/* files
Remove old tests (tests all pass now)
Split out src/alignment/ files
Update ctx_contigs.c to handle own arguments
  - only ctx_reads, ctx_join, ctx_subgraph remain with old style
Fix compiler warnings and unfree'd mem on exit
Fix compile time warnings with GCC
Convert ctx_join and ctx_subgraph to using getopt_long()

cmd.c: add cmd_check() to print error if option given twice
Don't track Object file
ctx_reads.c: uses getopt_long()

async_read_io.c: collected common async IO from:
- correct_reads.c
- generate_paths.c
- build_graph.c

async_read_io.c: AsyncIOReadInput -> AsyncIOInput
Removed all mention of CmdArgs - coverted to using getopt_long() now
Update 'correct' command

1. correct_reads.c: fix bug printing wrong opening bkmer
2. correct_reads.c: print read bases (in lowercase) instead of N
3. ctx_correct.c take gap_variance, gap_wiggle (-d,-D) as cmd arguments
4. libs/cJSON: store numbers as `long` instead of `int`
5. db_graph.c: add db_graph_next_nodes_in_col() useful function
6. read_thread_cmd.c: only use max_context 1 if no paths loaded

Other:
* Fixed some warnings from CoverityScan