Add remaining javascript library files to repo

This allows local execution (without network connection).
Add prototype Block class
Separate cell update: data, formats, and positions
Refactor swap context into SwapContext class
Add documentation to SwapContext class

Modify `SwapContext.apply_swaps` method, such that it does not modify
the `block_positions` member array.  Instead, it returns a new array of
block positions with the swaps applied, leaving the member
`block_positions` array intact.
Fix (un)highlight swap-connected blocks
Move connected_blocks method to SwapContext class

Move `connected_blocks` method to `SwapContext` class since it is based
on the current swap context, not the placement grid.
Pause between showing swap links/applying swaps

Pause between showing swap links and applying swaps, but only if there
was at least one block that changed positions.

Add `a` shortcut key to manually update the block positions due to swaps
in current `SwapContext`.  While not particularly useful at the moment
(since simply pressing `spacebar` will apply any outstanding swaps
before proceeding), this shortcut key may be helpful if the rules for
"auto-updating" change.
Add undo operation for apply_swaps

The undo operation reverts the positions of all blocks to the original
positions before applying the swaps from the current swap context.
Currently, the undo operation is mapped to the `u` key.
Add load_placement and load_config methods...

Add `load_placement` and `load_config` methods to `PlacementController`
class.  Catch exceptions in `apply_swap_results()` method and call
`load_placement()` to refresh the placement by requesting the entire
grid contents from the remote `ModifierController`.  Note that passing
`true` as the first parameter to `load_placement`, `load_config` will be
called after syncing the placement.  If the argument is not supplied or
is set to`false`, `load_config` will not be called.