validate: ensure StorageArgumentException is always encodable
by embeding a string representation of the original Exception as StorageArgumentException args instead of the original exc.args since this can contain any python (possibli non-serializable) object.
This is needed e.g. when swh.model has runtime type validation.
Depends on !369 (closed).
Migrated from D2910 (view on Phabricator)