TAJO-774: Implement logical plan part and physical executor for window function.

This patch adds the logical planning part, distributed planning part, and sort-based window aggregation physical executors. They enables Tajo to use existing aggregation functions in OVER clause and add row_number() and rank().

This implementation has some limits. First of all, this patch does not support multiple different partition key groups in a query.

Example:
```
SELECT rank OVER(PARTITION BY P ORDER BY K), avg OVER( PARTITION BY P) ...
```

In above case, a query contains two OVER clauses which have the same PARTITION KEY group. So, it becomes available in this patch. But, the following case is not available.

```
SELECT rank OVER(PARTITION BY P ORDER BY K), avg OVER( PARTITION BY W) ...
```

In addition, there is one limit. This patch does not support the definition clause for window specification. I'll add this feature later.

The followings are examples provided by this patch.
```
SELECT sum(l_quantity) OVER () FROM LINEITEM

SELECT l_orderkey, l_quantity, sum(l_quantity) OVER (PARTITION BY l_orderkey) FROM LINEITEM

SELECT l_orderkey, l_discount, sum(l_discount) OVER (PARTITION BY l_orderkey), sum(l_quantity)             OVER (PARTITION BY l_orderkey) FROM LINEITEM

SELECT l_orderkey, l_partkey, rank() OVER (ORDER BY l_orderkey) r1, rank() OVER(ORDER BY l_partkey desc) r2 FROM LINEITEM
```
I added more description on the source code. Here is the description.

if the current key is different from the previous key, the current key belongs to the next window frame. preaccumulatingNextWindow() aggregates the current key for next window frame.