Build System: Fix more META.json issues
Decision Tree: Improve missing value handling for continuous features.

- Correct the behavior when IGNORE specified.
- Use average values instead of minimum values for missing cases.  It is
not clear avg is better than min.  median would be a good candidate.
Sparse Vector: Fix collation when sorting.

When comparing the C string str1 to the C string str2, we interpret
them appropiately according to the LC_COLLATE category of the current locale.

MADLIB-457
Decision Tree: Convert more LEFT JOIN to INNER JOIN.

This is an additional change to the previous commit 1c6a4a7.  The purpose
here is again to remove unexpected NULLs.

MADLIB-498
Sparse Vector: Revert test file from the last fix.
Decision Tree: Let dp_ids go down to child nodes when needed.

After double-checking the result tree table, it seems the dp_ids for
the best continuous feature was not correct, since we didn't assign
the dp_ids to the child nodes of a node whose best feature is a continuous
one.  That is, if the best feature for the current leaf node is continuous,
then the new created child nodes should inherit the dp_ids from this leaf
node(the parent node).  This will not change the final result of the tree,
but will increase the performance (more features will be used to calculate
the best feature).

MADLIB-509
Random Forest: Correct pruning parameter handling.

After discussion, to make the behavior of pruning parameters consistent
and make minimal risk (change little code), the solution is that the
parameter node_prune_threshold will only apply to the non-root node.
Using this approach, we can ensure any one of the trained tree has at
least one node (avoid empty tree).  The corresponding comments are added
to APIs in C45.sql_in and rf.sql_in.

MADLIB-497
Decision Tree: Fix __csvstr_to_array when continuous features is empty string.

The fix is to check the array_upper result as it's NULL if the array is
empty or NULL.

MADLIB-505
Decision Tree: Improve the missing value handling and performance.

In find_best_split, add some skip when the h2hmv is explicit.  It turned out
this improves the processing performance in some cases.

MADLIB-504
PLDA: Improve error message in sampling new topics.

When the input array contained NULL element, the error message was
not directly indicating it.

MADLIB-474
Random Forest: Error out early when training table is empty.

Jira: MADLIB-517
The previous message was not friendly to users.  Also change error message and
remove the upper limit of 8000000.
Random Forest: Add the check for features_per_node, which should be null or greater than 0.

Jira: MADLIB-516
Random Forest: Enhancement for max_split_point.

Jira: MADLIB-514
With this method, we can split the input more elegantly instead of
dumping all the inputs.  This speeds the training up.
DT/RF: Add check for feature_per_node and feature names.

Jira: MADLIB-520
If the value of feature_per_node is greater than the total number of feature,
we will raise an exception.  Also, if the listed features' name are not the
columns of training table, we will raise an exception.
Logistic Regression: Disable unstable unit tests for now.

Jira: MADLIB-524
It is desirable to fix the unit tese as like the recent sophisticated ones in the
stats module, but for now the unit test should be passed as it's a blocker for
other work.
Probability and related modules: User-defined policy for Boost Math instead of manual domain checks

C++ AL:
- Boost global functions (so far, only error handlers) are now in dbal/BoostIntegration directory

Probability functions:
- Instead of isnan/isfinite/etc. checks, we now have a user-defined policy that propagates NaNs but errors out on all other boost domain errors (using the error message provided by boost).
- Boost probability functions are defined in modules/prob/boost.{hpp|cpp} using macros. New functions can now be added by adding only one line in both files.
- Provided a facility to override boost's domain checks (necessary, e.g., for the Fisher F-distribution).
- Student t-distribution now provides the standard boost interface.

Other modules:
- Adapted to the above changes
Probability Module: Added C++ code for all remaining boost probability functions

Probability Module:
- All remaining boost functions added in C++ code, with the exception of the Inverse Gaussian Distribution. We wait on resolution of https://svn.boost.org/trac/boost/ticket/6934 or particular user request before including it.
- Student's t CDF renamed from 'student_t_cdf' to 'students_t_cdf' in order to be consistent with boost. Probability functions were never really exposed in the past (the documentation was not accessible), so we do not have to worry about the API "change".
- The SQL definitions and unit tests still have to be merged and extended from pull request 131

C++ AL:
- Fixed trivial omission of a "throw" statement in AnyType::getAs()
- Added support for unsigned integer types (with range checks)

MADLIB-412
Probability functions: Kolmogorov distribution made a boost-style class

The Kolmogorov distribution can now be used in the same way as other distributions (i.e., using a cdf() function call). Also, by supporting the complement distribution, we can improve numerical stability in some cases.

The Kolmogorov-Smirnov test has been updated accordingly.

MADLIB-413
Probability functions: SQL UDF definitions and unit tests

Added SQL UDA definitions (CDF, PDF, quantile) and units tests for the following boost probability functions:
- chi_squared
- fisher_f
- beta
- uniform
- weibull
- triangular
- rayleigh
- pareto
- non_central_t
- laplace
- gamma
- bernoulli
- binomial
- cauchy
- exponential
- extreme_value
- geometric
- hypergeometric
- inverse_gamma
- lognormal
- logistic
- negative_binomial
- poisson
- non_central_beta
- non_central_chi_squared
- non_central_f

MADLIB-412
C++ AL: Boost Assertion Handle now works again

During recent changes the Boost assertion handler became inactive. I moved the definitions into the dbal/ hierarchy where they seem more appropriate than in the RDBMS specific directory.