Rewrote the history caching after some testing
Rewrote the history caching after some testing

Since AjaxRequests are asynchronous, the previous commit didn't work
very well.  This should be better.

 - Added HistoryController.next_move_number to keep track of the move
   that the controller should update to.

   - When updating the board, if it's the same as
     this.current_move_number, then there's nothing to do.

   - The various user-accessible move number mutators now work on
     this.next_move_number.

   - this.next_move_number is kept in sync with what the user sees,
     which is $("current_move_number").value.

 - HistoryController.set_move_number immediately updates
   this.next_move_number.  It then calls this.retrieve_move_number if
   the number is not already in the cache, or this.update_move_number if
   it is.

 - HistoryController.update_move_number assumes that
   this.next_move_number is in the cache, and updates everything
   (including this.current_move_number) to that move.  It doesn't do any
   work if this.current_move_number is already equal to
   this.next_move_number.

 - HistoryController.retrieve_move_number makes the AjaxRequest and
   saves move in the cache.  this.update_move_number() only gets called
   if the retrived move is still equal to this.next_move_number.

   - Note that if the user rapidly presses the next move button five
     times, assuming nothing is in the cache, five requests will be sent
     for five unique moves.  When the final request comes back, the
     display will be updated.

Mec-iS/game-of-go,Mec-iS/game-of-go,davepeck/game-of-go,Mec-iS/game-of-go,davepeck/game-of-go,davepeck/game-of-go