This looks better, I think
Changed the spec on how the parsed values are stored

This doesn't make for as clear code or documentation, but allows for
distinguishing between an empty string value and a missing argument, as well
as passing strings that contain line breaks to arguments accepting multiple
values.