Add exportStats parser
The exportStats parser is intended to be used for data processing and analysis.
It outputs a CSV for each session, with each line corresponding to a board
state. The user may select which statistics they want calculated for each
board.

Currently the parser only includes a single statistics function, which counts
the number of filled cells. However, because the parser requires at least two
functions in the form, it is displayed twice currently.

Related changes:
 - The log for the board has been moved to after lines are cleared, as this is
    the state the board is in when the next piece appears.
 - The line clear event is now only triggered when one or more lines are
    cleared. Previously it was triggered every time the game checked for a line
    clear.
Add functions for exportStats parser, add separator select
This commit adds several statistics functions to the exportStats parser. Each
of these functions returns a numerical value for each board as follows:
 - countCells: number of filled cells
 - countHoles: number of empty cells with full cells above them
 - highestPiece: height of highest piece
 - averageHeight: average of column heights

To make these functions simpler, I converted the logged board to a 2D array
rather than a 1D array. This in turn required a tweak to the displayBoards
parser.

Other changes:
 - Add CSV separator selection, allowing the user to choose how the entries in
    the exported CSV are separated. This is a change that could be applied to
    the exportCSV parser as well, if it becomes useful.
 - Clear the list of downloads on resubmit. Previously, resubmitting the
    function options would result in a duplicate list of downloads below the
    first one.
Change directory structure, update readme
The parsing files were moved to a separate directory, in order to clean up the
root directory. In addition, those for the parsers themselves were put in a
subdirectory of their own.

Other changes:
 - An outdated note about parser implementation was removed from the readme
Fix piece locking, remove pause on defocus
These changes address some known issues with the playbackGame parser, listed in
the original commit for the parser (7049c924...). The game no longer pauses
when the window defocuses, which was causing problems with timestamps and the
playback.

The unnatural piece locking was fixed by only resetting the lock timer when the
piece moves down. This timer was reduced to 300 milliseconds, which the time it
takes a piece to move down a single level. Unfortunately, sliding the piece
during this time still confused the playbackGame parser, so sliding has been
temporarily disabled entirely (i.e: the piece locks as soon as it touches the
bottom).

Other changes:
 - remove a duplicate processEvent function from playbackGame.js