tor-persist: Big refactoring on Error type.
Every error now has an action (what we were trying to do), a resource (what we were trying to do it to), and a source (what problem we encountered).
Initially I tried to add "action" and "resource" fields to error variants individually, but that led to a combinatorial explosion.
Part of #323 (closed).
Edited by Nick Mathewson