Make commands objects instead of functions calling each other.
Now there is '?' command that can display command list and help about
individual command. Also the command handling is more distributed into
places where it belongs.
Cut movie loading times to about half and movie saving times by 40% by
changing the way controller data lines are read and written. Also at the
same go, clean up controllerdata.[ch]pp.
If multi-threaded dumping was enabled, then a race was possible, where
code rendered next frame while previous frame hadn't yet been dumped.
This caused previous frame data to become corrupted, leading to encode
desyncing, complete with massive artifacts.
Bsnes spews quite a lot of warnings with -Wall (not that surprising,
given the looks of the code), but at least non-bsnes parts shouldn't
give warnings. Oh, this also fixed couple of bugs in Lua support.