Made it through first rough attempt to handle bounce.
Reworking bounce to deal with X and Y separately, and to take into account width/height
Broke out collision handling into a few functions.