Implemented Enemy Knockback Functionality

NOTICE: Do not directly merge this branch. I turned off a number of
damage variables while debugging. Instead of merging, copy over the
diffs into other source.

Horizontal knockback works fine. It uses the position of the weapon, we
may want to adjust position of weapon object or switch logic to player.