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.
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.
Probability functions: Documentation and unit-test fixes for gamma and Weibull

Started to revise the doxygen comments for the probability functions. This work needs to be continued for the remaining functions.

I also fixed two bugs in the unit tests for the Weibull PDF and the Gamma PDF. Unfortuntately, boost has bugs in both cases.

MADLIB-412
Probability functions: Unit tests now pass till Bernoulli

Implemented workarounds for the following boost bugs:
https://svn.boost.org/trac/boost/ticket/6934
https://svn.boost.org/trac/boost/ticket/6937
https://svn.boost.org/trac/boost/ticket/6938
https://svn.boost.org/trac/boost/ticket/6939
There are other bugs for which no report has been filed yet, and which are mentioned in the boost.hpp file.

MADLIB-412, MADLIB-519
Probability functions: Adjusted comments and parameter names

Jira: MADLIB-412

Parameter names are no longer greek characters but short abbreviations of the description. Made parameter descriptions consistent.
Probability functions: Updated Doxygen documentation, parameter names

Jira: MADLIB-412
Probability Functions: Workarounds for corner cases that boost does not handle correctly

Jira: MADLIB-412

List of changes:
- Corrected bugs in the unit tests
- replaced absolute-error checks by relative-error checks
- The domain-check override for discrete probability functions now discretizes the input if necessary
- Many overrides of corner cases. Quite often, Boost does not get NaNs, wrongly handles the boundaries of proability density functions, or misses input checks due to boost bug 6937
- Fixed a few typos and added MADLIB Jiras as suggested during code review.
Probability functions: Sorted SQL function definitions and unit tests

Jira: MADLIB-412

No other changes. If you want to compare to previous revisions, look at the diff of the preceeding commit.