Updated structs/TestRules
Fixes for test/structs/
Removed more useless tests
Check for extern redefinitions
Remove debugging %d from missing-braces message
Correct float TODO -> ICE
Fix commutative/equality comparison inversion
Customisable timeout and default for test.pl
Removed more useless test/* files
Moved reachability test
Updated test/other/test[.pl]
Apply default and case promotions for switch statements

Also refactor the switch logic. Switch specific code has been moved
to ops/stmt_switch and a .bits under struct stmt has been added.

Labels are now kept in the switch under an array that isn't .codes,
and each case/default keeps the label in .bits instead of the .expr
ident member, so it doesn't interfere when we cast the expression
to the switch controlling expression type.
Tidied run_tests
Minor tweak to test/.../char overflow test
Update duplicate case error
numeric_cmp() handles signed and unsigned values