Cache the environmental stuff on vehicles so that it only runs when needed

Blood and engine smoke status is cached, which saves minor processing that's done on all vehicles every turn. Makes little difference now, but is helpful if we want to increase number of vehicles in the vehicle list later. More importantly, moving it into a separate function improves overall code readability.