Velocity changes are now stored in a queue so they can be processed in order in each Snake.move() call.  This prevents move commands from being dropped while still ensuring that only one velocity change per move call happens