due to my misremembering of how bytes and strings work in python 3, the previous commit never really worked in python3.x for a variety of reasons, mostly due to my loosey-goosey handling of string and bytes. this makes it more consistent. updates lots of documentation and also documents part of the writer's internals, even though those are far more obvious and the code is pretty clear on that front. adds in two more test cases which the previous versions missed: 1. a swatch file with only one color. this catches two important issues: the left padded string being written out incorrectly and the color mode/rgb/etc not matching the keys in the mode index. 2. a swatch with a folder and one color, mostly here so that it can be tested to see if the folder-writing code is broken in a small test-case. the other tests are sort of ridiculous test harnesses since they're really overkill. maybe i'll change that, but it's nice to have some test on real legitimate style swatches.
fixes chunk_count to == '2 + number of swatches in color group' since the group's terminator implicitly adds another chunk to the mix. adds `swatch.dump(obj, fp)` and `swatch.write(obj, filename)` each of which are convenience methods for swatch.dumps. adds unit tests for the writer to ensure that a parsed json file can be rewritten to an identical ase file.