TPT++ cracker64: small optimisations

Commits e700ff29883fcc3479ad8d9fce9805fbb0d31dfa through 85cb4b37c93baa3e227fa6a93c8312b9ab0fb6c3

Also applied:
947660fc jacob1: Fix hydrogen not burning right (with and without realistic heat), allow h2 to burn at all temps while still allowing fusion to work correctly
1fb54481 Simon: Correct PHOT colour during fusion

Differences from TPT++ commits:
FUSE, FSEP life>40 check fixed.
Some LIGH changes (like disabling nearest_part) not applied, and tmp2 setting fixed for last particle in a line.
NEUT: non-SDEUT code for reaction with DEUT removed.
SPRK(INWR) is heated by SPRK(METL) - although this doesn't happen in the original code.
QRTZ should not conduct to itself if high temperature and insufficient pressure make it non-conducting.
Later TPT++ fixes applied to SPRK conduction rules.
Misc small fixes

SPRK has no legacy reactions so don't call update_legacy_PYRO for it.
Use pmap loops excluding energy particles for ARAY.
BIZR reaction with PHOT is already in the movement code for PHOT.
Fix accidental assignment in DLAY_update.
Move ELEC+GLOW reaction into movement code.
Return 1 in some places where parts[i].type has changed.
Add a bit more implementation of FILT modes (started in a435fab7).
Reset LCRY properties if tmp is invalid.