Allow archive.extracted to be used during highstate run

Use state.single instead.
Use better target cache dir. (Note that this may cause previously cached
files to be re-cached!)
Catch attribute error if str
Missed one try/except
Guh. Wron exception type. Derp.
Merge pull request #16690 from cachedout/issue_16658

Allow archive.extracted to be used during highstate run