[Spark-1461] Deferred Expression Evaluation (short-circuit evaluation)

This patch unify the foldable & nullable interface for Expression.
1) Deterministic-less UDF (like Rand()) can not be folded.
2) Short-circut will significantly improves the performance in Expression Evaluation, however, the stateful UDF should not be ignored in a short-circuit evaluation(e.g. in expression: col1 > 0 and row_sequence() < 1000, row_sequence() can not be ignored even if col1 > 0 is false)

I brought an concept of DeferredObject from Hive, which has 2 kinds of children classes (EagerResult / DeferredResult), the former requires triggering the evaluation before it's created, while the later trigger the evaluation when first called its get() method.

Author: Cheng Hao <hao.cheng@intel.com>

Closes #446 from chenghao-intel/expression_deferred_evaluation and squashes the following commits:

d2729de [Cheng Hao] Fix the codestyle issues
a08f09c [Cheng Hao] fix bug in or/and short-circuit evaluation
af2236b [Cheng Hao] revert the short-circuit expression evaluation for IF
b7861d2 [Cheng Hao] Add Support for Deferred Expression Evaluation

(cherry picked from commit a20fea98811d98958567780815fcf0d4fb4e28d4)
Signed-off-by: Reynold Xin <rxin@apache.org>
SPARK-1862: Support for MapR in the Maven build.

Author: Patrick Wendell <pwendell@gmail.com>

Closes #803 from pwendell/mapr-support and squashes the following commits:

8df60e4 [Patrick Wendell] SPARK-1862: Support for MapR in the Maven build.
(cherry picked from commit 17702e280c4b0b030870962fcb3d50c3085ae862)

Signed-off-by: Patrick Wendell <pwendell@gmail.com>
Revert "[maven-release-plugin] prepare for next development iteration"

This reverts commit c4746aa6fe4aaf383e69e34353114d36d1eb9ba6.
Revert "[maven-release-plugin] prepare release v1.0.0-rc7"

This reverts commit 9212b3e5bb5545ccfce242da8d89108e6fb1c464.
[maven-release-plugin] prepare release v1.0.0-rc8
[maven-release-plugin] prepare for next development iteration