zip: implement zip extraction support
This adds code sufficient to extract files to available storage given a
suitable root directory to extract to. It works on an already open zip
handle and also supports chain-loading a secondary callback in the event
that integration into the process is desired.
Change-Id: Id200d8f20d84a0cbd22906470de8bbd21d4525ef