in game hook optimizations/fixes (space, time, realtime vectors)

Original ROM vectors are now determined at runtime by momentarily
disabling the vector patching and copying them to the jump statements.
To potentially save raster time, joypad is not read manually when auto
joypad read is in place - the results of auto joypad read are used
instead.
Also controller is only read every 8 hook calls to further improve
compatibility.
Addresses are adjusted for space optimizations.
make cfg struct packed (to make cfg file size match number of fields);

revert to defaults on version mismatch
(fix accidentally disabled region patching on upgrade)
update in game hook addresses in menu, too
BSX: fix PSRAM mapping, emulate Type 1 memory pack instead of Type 2

A bug in the BS-X BIOS keeps it from working with HiROM games marked as
"run from PSRAM" used together with Type 2 memory packs. Thus memory
pack Type 1 is now used (different command set).
PSRAM was incorrectly mirrored to banks 00-3f in HiROM mode.
Add missing cheat.v for cx4 and obc1
FPGA: Auto-choose NMI/IRQ vector depending on usage by SNES;

also do not switch vector patching while vectors are being read
Do not initializie BS-X MCC registers from MCU; unlimited startups for mempack

registers are initialized in FPGA config
FPGA: properly synchronize asynchronous FSM control signals

hopefully REALLY eliminate FSM lockups this time
Allow NMI and IRQ for in game hooks
Update version number
Do not list hidden and system files in file browser
Remove tabs
MSU1: support in-game keys
Merge remote-tracking branch 'mrehkopf/develop' into develop