Extension:ChessBrowser/Proposal front end

This proposal is based on the RFC contract described in Extension:ChessBrowser/PGN schema.

Placing the pieces on the board
Placing the pieces on the board is a central functionality for the front end. It can be dubbed "goto board", where "board" here is meant as a specific position, i.e., "the chessboard as it looks at some point in the game".

When this function is called, whatever position is currently shown, the pieces gracefully animate to the requested position. This may affect a single piece, such as the first move in a game, or each and every piece, when, e.g., switching from the opening position to some position deep in the game, going either forward or backwards. Pieces can appear or disappear, etc.

The basic "go to board" function looks roughly like so: The  array contains simple objects, constructed from the "config". each piece has an "elem" filed, which is a div, with certain classes that control its appearance (currently, size, and background image with the actual piece), its location - one class for row, one for column, and its "visible" state.

These objects need only to support 2 functions:  and moveTo, both are implemented by adding and removing location and visibility classes.

Controllers
UI controls (buttons, notations, etc.) are bound to "controller" functions.

For instance, the "full rewind" button is bound to a controller which calls  , Each of the notations is bound to a controller that queries "this" to find out which board it should go to, etc.

This can mostly be taken from existing script.