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.