Fix metafile idempotence

add_item_to_metafile() was using fs/path.exists() incorrectly, resulting in a short circuit to the function's second condition (else). Therefore, the metafile could only contain a single key-value and could not be updated using the add_item_to_metafile() function. exists() now calls a callback rather than expecting a boolean value. add_item_to_metafile() now also accepts a key rather than it being hard-coded as 'unzipped_file' so the function may be used elsewhere.

This branch passes all tests.

Thanks!