[CRASHFIX] Stop vehicle missing frame check from causing crash by using typical part iteration loop. Optimize too.

* Fix crash in vehicle::add_missing_frames
* Prevent vehicle::add_missing_frames from needlessly triggering precalc_mounts/find_* etc multiple times
----
gcc linux with -O3 results in:

Program received signal SIGSEGV, Segmentation fault.
vehicle::add_missing_frames (this=0x8972df0) at vehicle.cpp:99
99              int next_y = it->mount_dy;
(gdb) bt
#0  vehicle::add_missing_frames (this=0x8972df0) at vehicle.cpp:99
#1  0x0853d0f2 in vehicle::load (this=0x8972df0, stin=...) at vehicle.cpp:84
#2  0x082913a7 in mapbuffer::unserialize (this=0x865a040, fin=...) at mapbuffer.cpp:412
#3  0x08291a2a in mapbuffer::load (this=0x865a040) at mapbuffer.cpp:248
#4  0x0827c27c in main (argc=0, argv=0xbffff7a4) at main.cpp:87
(gdb)

This fixes the crash in -O3 and unoptimized.