src/intro.js: Start intro animation on video end instead of timeout.
src/{intro,constants,ui}.js: reorganize intro.js code, change game width to 1000px
src/game.js: Make BaseGrid its own class, register it globally.
src/simulate.js: Use getters, setters in ToyPrng
src/ui.js: missed place affected by BaseGrid refactor
src/constants.js: reduce MAIN panel height
src/{grid,components}.js: Fix drawGrid()
src/{game,intro}.js: Add the grid.
index.html, src/{lib,game,intro}.js: add lib.js, destroyAll()
src/{ui,constants}.js: Draw outline box for MAIN panel.
src/{intro,components}.js: Correctly center video.
src/constants.js: Dynamically determine panel vertical positions.
src/ui.js: Draw the BANK panel and a placeholder box for consensus.
src/game.js: fix bug in snap() where min != 0
src/game.js: Allow reads into BANK, don't count them in consensus when there.
- Change BaseGrid to represent the actual grid vertically as well as horizontally.
src/{game,constants}.js: start reads in BANK, shorten MAIN.
src/ui.js: Don't shift reads in the BANK.
src/{game,intro,components,simulate}.js: refactor 'Consensus' component.
- add add() method to add a base.
- add a getter for .length.
- attach() each base, negating the need for .myDestroy().
- update code interacting with Consensus.
- rename 'Read'.addBase() to 'Read'.add().