Return remaining unparsed data from parse functions

This depends on ashfall's PR #4, so it currently contains her code from there. The diff will make more sense when that's already merged.
Yeah, this is definitely too much copying. I would eventually like to figure out how to get zerobuffer involved here, so that we can just give construct some zerobuffer-ish object so that we don't have any unnecessary copying.