Naive Bayes: Skip NULL values (not rows) from training

Jira: MADLIB-614, 749

NULL values in attribute values cannot be directly used for training
the model. Currently rows with NULL values are completely ignored.
This becomes a problem in datasets that have many rows with at least
one NULL value. We can currently ignore just the specific attribute
which is NULL instead of ignoring the whole row. This should be
changed to better NULL handling, similar to the feature in R.
Cross Validation: Create a cross validation module

JIRA: PIVOTAL-40975391

Created a new module for applying cross validation on regression
methods. The current interface is setup to work with linear and
logistic regression, as well as ridge, lasso, and elastic net
regression techniques that are upcoming. All other modules can be
supported by adding wrapper functions to work with the cross
validation interface
General Cross-validation: update for GPDB40, 41 and PG84

Solved some compatibility issues
Module Name: General Cross-validation

Fixed a typo
Linear Regression: Add grouping support and heterskedasticity

PIVOTAL: 40576747

Added new api for linear regression along with support for grouping
columns. Also added computation of heteroskedasticity values as an
aggregate.
Reorganize utilities

Move __unique_string, argument validations and __mad_version into
utilities
Compatibility issue: GPDB41

When creating table, it seems that GPDB41 also needs a similar treatment
as GPDB40.
Added data_cols existence check to general CV
Logistic Regression: Refactor iteration controller

Other minor changes:
- Move all code into Python abstraction layer
- All internal functions now start with __
- Added argument validation for logistic regression
- In cv_utils, added functions to help return array from Python
    to older versions of database system. However, its usage in
    logistic regression turns out to be unnecessary
- Updated control.py_in to evaluate all forms of expression
- Removed the _args from update function in logistic.py_in since
    it wasn't being used. This avoids the problem of qualifying
    an array expression with the table name.
Minor corrections due a mistake in previous git merge
Logistic regression: New API

* Changed the API of logistic regression to add place holder for
  grouping support.

* Also updated user doc and install-check.

* Also wrote new input/output tests for the new API of logistic
  regression.

Other minor changes:

* Also removed the execution mode of some files

* Changed compatibility module's install-check to make it utilize linear
  regression instead of the old API of logistic regression.

* In the Python AL, the iteration controller, added function to handle
  convergence without grouping

* General CV module does not need its own wrapper for the older logistic
  regression any more
Utilities: Add new group controller

Added a new class for group controller such that the state is saved
for each iteration with a new group column. The column is set to use
NULL value if no grouping option is provided.

Also updated logisitic regression to use the new group controller
providing grouping support. The new API is now functional.
Generic CV: Allow NULL parameter
Upgrade Eigen to version 3.1.2
License: Remove typo in Eigen license file
New LDA module is added

Better performance and scalability