Changed How Player handles Input

Players now take in inputs as keystates instead of button presses. once
a button is pressed players set buttonpressed variables to true or
false.

every few millliseconds client now sends player's keystate to server and
the server uses the new keystate to determine player's movement on the
server. This is in addition to the button presses the player already
sends to the server. This is used incase server misses an event, if he
misses an event the keystate may make up for it. the keystate packet
also contains the player's rotation.