Added errors for -ve rates, moved macro_pops call out of elements loop

Some more robust errors and checks in macro_pops, and also a correction of a small error in saha.c which caused macro_pops to be called more times than necessary.