Iran war, rising prices and president’s low ratings give Democrats advantage, but Republicans have poured cash into key races – could it be decisive?