{Laser, Emg}Projectile: disable all collision-testing when ttl <= 0

these projectile types can EXCEED their range due to fadeout
and only remove themselves (deleteMe=true) when intensity or
length reaches 0, so without disabling coldet (checkCol=false)
range-exploits were possible

FYI: I *HATE* ALL THESE HIGHLY SPECIFIC VISUAL BEHAVIOR TAGS
make LaserProjectile::Collision(*) consistent
fix portable mode detection #3670
fix folder structure for validation test
increase default maxTextureSize to 2048 to suppress 3do warnings in validation tests
fix macosx compile (typo)
fix #3637 (by versioning the cache-directory)
no trailing slash
beautify
fix filesystem test
spring-singlethreaded --> spring-legacy
build/install spring-legacy via option
CMake: made all bool vars options + deduplicate options
reenable spring-legacy as fallback as we still have no guarantee / real test that it works on all/most systems
fix #3656 (enforce use of cmake for VS)
(no response for a few days, i assume yes)
fix #3674
fix
{Get,Set}UnitWeapon{Fire,HoldFire,TryTarget,TestTarget,TestRange,HaveFreeLineOfFire} WeaponID argument to use the same 1-starting indexes as rest of spring's lua interface
this breaks backwards compatibility, but will save lots of headaches produced by inconsistent indexing of what unitdevs/unit scripts use and what those functions espect
forgot to add mute and mutebynum to blacklist command array so only host can execute them
fix #3675: wrong loglevel in unit_script.lua
forgot to align the index when accessing the array too