Increase robustness of sim1.m by handling the case when A\res contains nan or inf

sim1.m calls lin_solve to perform A\res after this change. lin_solve_robust.m is provided as an even more robust alternative which perhaps could be enabled later via an option.

See the below multi-country irreversible investment model for an example of why this helps:

```
@#define NumberOfCountries = 2
@#define Deterministic = 1

var log_kappa;
@#for Country in 1:NumberOfCountries
	var mu@{Country}, logit_l@{Country}, k@{Country}, a@{Country};
@#endfor

parameters alpha beta varrho delta theta rhoA sigmaA;

alpha = 0.3;
beta = 0.99;
varrho = 1.5;
delta = 0.025;
theta = 0.9;
rhoA = 0.95;
sigmaA = 0.05;

@#for Country in 1:NumberOfCountries
	varexo epsilonA@{Country};
@#endfor

model;

	#kappa = exp( log_kappa );
	#LEAD_kappa = exp( log_kappa(+1) );
	
	#min_A = theta ^ ( 1/alpha );
	#mean_a = log( 1 - min_A );

	@#for Country in 1:NumberOfCountries
	
		#K@{Country} 		= exp( k@{Country} );
		#LAG_K@{Country} 	= exp( k@{Country}(-1) );
		#LEAD_A@{Country} 	= min_A + exp( a@{Country}(+1) );
		#A@{Country} 		= min_A + exp( a@{Country} );
		#LAG_A@{Country} 	= min_A + exp( a@{Country}(-1) );
		#L@{Country}		= 1 / ( 1 + exp( -logit_l@{Country} ) );
		#LEAD_L@{Country}	= 1 / ( 1 + exp( -logit_l@{Country}(+1) ) );
		
		#C@{Country} = kappa ^ ( -1/varrho ) - theta / ( 1-alpha ) * ( A@{Country}*(1-L@{Country}) ) ^ ( 1-alpha );
		#LEAD_phi@{Country} = ( 1 - theta * ( LEAD_A@{Country}*(1-LEAD_L@{Country}) ) ^ ( -alpha ) ) * LEAD_kappa;
		#I@{Country} = K@{Country} - ( 1-delta ) * LAG_K@{Country};
		
	@#endfor
	
	@#for Country in 1:NumberOfCountries
	
		( a@{Country} - mean_a ) = rhoA * ( a@{Country}(-1) - mean_a ) - sigmaA * epsilonA@{Country};
		L@{Country} = min( LAG_K@{Country} / A@{Country}, 1 - theta ^ ( 1/alpha ) / A@{Country} );
		kappa - mu@{Country} = beta * ( ( 1-delta ) * ( LEAD_kappa - mu@{Country}(+1) ) + LEAD_phi@{Country} );
		kappa = max( beta * ( ( 1-delta ) * ( LEAD_kappa - mu@{Country}(+1) ) + LEAD_phi@{Country} ), ( theta / ( 1-alpha ) * ( A@{Country}*(1-L@{Country}) ) ^ ( 1-alpha )
		@#for OtherCountry in 1:NumberOfCountries
			+ A@{OtherCountry} * L@{OtherCountry}
			@#if OtherCountry != Country
				- C@{OtherCountry} - I@{OtherCountry}
			@#endif
		@#endfor
		) ^ ( -varrho ) );
		
	@#endfor

	0 = 0
	@#for OtherCountry in 1:NumberOfCountries
		+ A@{OtherCountry} * L@{OtherCountry}
		- C@{OtherCountry} - I@{OtherCountry}
	@#endfor
	;

end;

steady_state_model;

	a = log( 1 - theta ^ ( 1/alpha ) );
	mu = 0;
	L = 1 - ( 1/theta * ( 2 - 1/beta - delta ) ) ^ ( -1/alpha );
	K = L;
	I = delta * K;
	C = ( 1 - delta ) * L;
	
	kappa_ = ( C + theta / ( 1-alpha ) * ( 1-L ) ^ ( 1-alpha ) ) ^ ( -varrho );
	
	log_kappa = log( kappa_ );
	
	@#for Country in 1:NumberOfCountries
	
		mu@{Country} = mu;
		logit_l@{Country} = log( L / ( 1 - L ) );
		k@{Country} = log( K );
		a@{Country} = a;
		
	@#endfor
	
end;

steady;
check;

shocks;

	@#if Deterministic
		var epsilonA1; periods 1; values 2;
		@#for Country in 2:NumberOfCountries
			var epsilonA@{Country}; periods 1; values 0;	
		@#endfor
	@#else
		@#for Country in 1:NumberOfCountries
			var epsilonA@{Country} = 1;	
		@#endfor
	@#endif

end;

@#if Deterministic
	simul( periods = 400 );
@#else
	stoch_simul( order = 3, irf = 200 );
@#endif
```