Analytic functions BE implementation

Evaluates analytic functions with a single pass over sorted input rows and using
a BufferedTupleStream to buffer output rows. It is assumed that the input has
already been sorted on all of the partition keys and then the order by exprs.
Analytic functions are implemented as aggregate functions.

Current implementation only supports partition clauses and order by clauses with
the default window (i.e. UNBOUNDED PRECEDING to CURRENT ROW).

Change-Id: I93f37a4e7fd8167261bf86c2a5b7c8569a1f7b11
Reviewed-on: http://gerrit.sjc.cloudera.com:8080/3939
Reviewed-by: Matthew Jacobs <mj@cloudera.com>
Tested-by: jenkins
(cherry picked from commit af7703841d682c4b24fdc2f41b4b4655037475e6)
Reviewed-on: http://gerrit.sjc.cloudera.com:8080/4015