Made keyboard input a queued system using core.async channels. Also, fixed direction change bug. Previously, if the user pressed a sequence of arrow keys between two ticks of the logical clock, then the snake direction could be left in an invalid state. This is now disallowed.