qc test generalization etc

A number of updates:

 - `AutoQC.py` will now automatically detect all tests in `/qctests` and run them on each profile
 - Running the qc tests will now generate a verbose logfile containing the results for each test on each profile at each depth
 - running the tests now leaves arrays in memory indicating which profiles were flagged by which tests; this will enable us to easily combine tests (via AND / OR'ing their results) to study their composite behavior
 - most functionality from `AutoQC.py` has been factored into functions for later testing

Todo:
 - Code unit tests still need to be written! Until this code is thoroughly tested, it is *not fit* for use in research.
 - Spaces have been left in `README.md` to specify the raw data format of files listed in `datafiles.json`, and the shape of the profile objects returned by the wod parser.

Notes:
 - I dropped `ddt` - it was adding more complications than it was solving.
 - Also dropped `/demo`; `AutoQC.py` has learned all it can from that exercise and moved beyond it.

@s-good, please check this out and see how it looks before we merge this PR. Looking ahead, we can proceed with a number of tasks:

 - code testing: this whole package needs automated validation before we move too much further
 - composite qc testing: we are now in a position to compose individual QC tests into more complicated tests - how should we proceed here?
 - qc test implementation: translating qc tests into the format described in `README.md` can proceed
 - visualization and post processing: what sort of post analysis or plots would be useful?

Once this PR is accepted, we'll re-cast these as some issues we can discuss and point participants at.