Returns an AbstractError that best represents the passed subject. If the passed subject is already an AbstractError, it is returned as-is. Otherwise, it will be converted into an appropriate error type.