mob/Bump() refactor

OOPing and general cleanup.

Removes a ton of copy-paste and needless code.
Creates three new mob/living procs: ObjBump, MobBump and PushAM which are called by mob/living/Bump().
Also fixes simple_animal Bump() on harm intent (previously, they'd move twice).
Fixes #3550