Stubbed out ydb_time_window module.

Has same basic structure as ydb_row_window module but needs a policy
for when to send out the diff after a certain amount of time has
passed. This means the notify procedure is not solely based on when
data is received.
Initialized internal state of the window node.

Supports the following options.
  (1) {size, {time_unit(), Size :: pos_integer()}}
  (2) {pulse, {time_unit(), Pulse :: pos_integer()}}
Fixed issue with number of diffs stored for row window.

Needed to divide the size of the window by the rate at which it should
update, in order to get the correct number of diffs.
Attempted computation of diff logic.

Iterates through list of tuples and "accumulates" a new state with each
one in a similar fashion to how the ydb_row_window operates.

However, because the window is time-based there are moments when the
next diff should be sent to all subscribers regardless of whether data
was received.
Implemented helper function get_curr_time/0.

Returns the current system time in microseconds.
Added support to measure the arrival rate.
Defined helper functions send_diff/1 and send_diffs_until/2.

Simplifies the effort needed in order to continously the first diff
when the timestamp of the datapoint differs greatly from the previous
datapoint.
Fixed assumption about `Tuple' falling in next window.

Now able to continuously send the first diff until the boundary would
exceed the timestamp of the tuple.
Fixed off-by-one erorr with send_diffs_until/2.

The boundaries stored in the state represent the RHS of the window, so
the accurate boundary for the specified timestamp exceeds the value,
but by no more than the pulse.
Set up timer for sending diffs.
Handled edge case with arithmetic in ydb_time_window module.

The `LatestTimestamp' and `LatestSystemTime' are both undefined before
a tuple has been received previously.
Added support for window-ing a stream by time 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'}]
    }).

    TimeWindow = {time_window, {}, {milli_sec, 2}, {milli_sec, 1}}.

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

    ydb_branch_file_input:do_read(FileInput).

Adjust the batch size and poke frequency of the file input as needed.