Adds damage debug overlay

Adds the feature discussed here #6198. 
I recomment changing this block of code to the following:
```csharp
var health = self.TraitOrDefault<Health>();
if (health == null)
	return;

var damageText = "{0} ({1}%)".F(-e.Damage, e.Damage * 100 / health.MaxHP);
```
The Lazy class defers evaluation to when it is first used, and isn't helpful here as you then evaluate it (by calling `.Value`) in the next line. Moving the `-` out of the string means that this will correctly handle negative damage (healing). This also limits the percentage display to the integer values, as the decimal places aren't really needed.