Switched IInArchive.Open back to an HRESULT function instead of safecall, since safecall doesn't raise an exception for an S_FALSE return value.  Added a new exception type for S_FALSE so it's possible to detect that and handle archive open failures differently (e.g., if a file isn't handled by the current archive class).