Factor out CookbookUpload::Archive

This sets Supermarket up to alter its archive processing logic
independently of its file regex logic, which will make a future
(temporary) change to using libarchive transparent and revertible.
Make metadata.json pattern more precise

Namely: use \A instead of ^, include \Z in the pattern so that matches
are exact, and escape the period preceeding the extension.
Process archives in a backwards-compatible way

For the time being, we'll use libarchive, along with a relaxed and less
efficient metadata seeking process to process cookbook archives. Doing
so allows the data migration to complete. This commit should revert
cleanly once the backwards-compatible period is over.
Merge pull request #485 from opscode/backwards-compatible-archive-processing

Backwards compatible archive processing