Stubbed out ydb_row_window module.

Implements the ydb_plan_node behaviour. Creates a diff of what tuples
were added or removed over a sliding window of a stream, by the number
of rows.
Initialized internal state of the window node.

Supports the following options.
  (1) {size, {Size :: pos_integer, rows}}
  (2) {pulse, {Pulse :: pos_integer, rows}}
Added helper functions to manipulate the list of diffs.
Create sufficient number of empty diff tables.
Implemented computation of diff logic.

Iterates through list of tuples and "accumulates" a new state with each
one. When the number of remaining tuples for this window reaches zero,
the ETS table is sent to the listener.

Adds a PLUS (+) tuple to the first diff and a MINUS (-) tuple last one.
Fixed issue where was not storing first and last diffs in state.
Fixed issue with not getting last element of list correctly.

Accidentally was using erlang:tl/1 rather than lists:last/1.
Fixed issue where getting wrong first diff.
Added support for window-ing a stream by rows in planner.

Example Query:

    FileInput = test.

    application:start(ydb).
    ydb_sup:register_input_stream({
        FileInput
      , ydb_branch_file_input
      , [{filename, "terms.dta"}]
      , []
      , [{a, [{type, {1, atom}}, {value, {2, int}}]}]
      , [{a, '$auto_timestamp'}]
    }).

    RowWindow = {row_window, {}, {2, rows}, {1, rows}}.

    ydb_sup:register_query({
        query
      , {input_stream, RowWindow, FileInput, a}
    }).

    ydb_branch_file_input:do_read(FileInput).