defaultweapons.lua overhaul

This branch contains two changes. 

Firstly, the whitespace has been cleaned, useless commenting removed, and additional comments added to better set out what's going on. Functions have also been moved around visually in position so that reading through is easier and the structure makes more sense. It should make tracking down the bug which makes beams not cease firing properly much easier, though I must admit I've not yet been able to find a cause.

Secondly, the hugely duplicated Overcharge code which previously resided in the unit script files has been moved to a new OverchargeWeapon class, centralising that code.
!= isn't lua standard which makes auto-linters bork in editors