PC collision detection

Hmm. I thought this would be less work.

Appears we can mark stuff as 'solid' and register a callback for the PC
(which now has collision comp) ... that lets us go and add a callback
for hitting 'solids'.

I like the technique of using 'solid' as a name... but I wish that the
functionality for that was built in. Maybe too specialised.

Also I don't like the way we have to stop movement by reaching into
internal state. Maybe ok for now.