K-means: Fix dist_angle metric to return values when norm is 0

Jira: Madlib-768

When distance metric 'madlib.dist_angle' is used, which is defined as
the angle between two vectors, Inf is obtained when either of the two
norms is 0. The angle is not defined mathematically. Just let the
metric return \pi under such circumstances to avoid error. This should
not affect the quality of the result.
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
Utilities: Use madlib array_agg for GPDB < 4.1 and PG < 9.0

Updated utilities function is_col_exists to use the
madlib_schema.array_agg when the version of GPDB is 4.0 and version
of PG is 8.4. For this change, the function takes an extra parameter,
the madlib_schema name. This change was reflected in logistic
regression and cross validation where is_col_exists was being used.
LDA: Handle arrays passed as strings for earlier versions of GPDB/PG

GPDB < 4.1 and PG < 9.0 pass arrays as strings. These should be
tackled using mad_vec function provided in utilities.
LDA: Have mad_vec return a float array