Simplify client config.py and refactor publishing script

The publishing script now does some smarter file inclusion -- protocols and test cases that are not used will not be included in the zip.

I've also added two flags to the publishing script:
* `-c`: takes in a specific `config.py`. This allows staff to create custom configs instead of using the default (which includes all protcols and test cases).
* `-d`: takes in a destination directory in which to put the ok zip.

Ideally, we'd have some robust tests for the publishing script. I've tested it manually and things seem to be working.
This has to do with general error handling, but we might be changing this. I'm thinking that we should try to separate things that are a result of internal Ok bugs and external bugs that are a result of the code that we're running.

For now, can you put a TODO here?