Random Forest: Revert the code related with MADLIB-514

Jira: MADLIB-529
The code change for MADLIB-514 turns to be extremely inefficient for some
data sets.  Though the change seems fine for certain data sets, we should
revert the change back based on the test results.
PLDA: Improve the error message when index is out of range.

Jira: MADLIB-474
Document: Add guidance on how to deal with high cardinality columns.

Jira: MADLIB-507
Hypothesis tests: Fixed documentation bug

Jira: MADLIB-526

Welch–Satterthwaite formula gives non-integrate degress of freedom, but documentation used to say that an integral value is returned.
Hypothesis tests: Fixed handling of infinities and NaNs in Mann-Whitney test

Jira: MADLIB-527

Since the MW test is a rank-based test, there is no reason to disallow infinities. NaNs on the other hand now propagate. No error is raised.
Hypothesis tests: Chi-squared GOF test no longer uses NULL default arguments

Jira: MADLIB-528

§4.15.4 ("Aggregate functions") of ISO/IEC 9075-2:2003, "SQL/Foundation" demands that aggregate functions ignore rows with NULL values. It is therefore confusing to use NULL arguments. The chi-squared GOF now has numeric default values for the expected number of observations (1) and degree of freedom (0), an the documentation explains how these values are interpreted.
Linear regression: Explicit check for df <= 0

Jira: MADLIB-530

The default policy for all probability functions has been changed to raise an exception if the parameters are invalid. The linear-regression code therefore now has an explicit check if degrees of freedom <= 0 (in which case a NaN p-value is returned).
C++ Code: Eliminated all -Wconversion warnings, a few code improvements as a result

Jira: MADLIB-510

Build system:
- Path to Boost is now a system path (to avoid warnings)
- Added "-fdiagnostics-show-option -Wconversion" options to C++ source code

Logistic regression:
- Added protection against oversized independent-variable arrays

Student's t probability function:
- Added checks for negative degrees of freedom

Discrete probability functions:
- Changed arguments to 32-bit integers, so that arguments can be losslessly converted to double, which Boost operates with.

Hypothesis tests:
- one_way_anove(): Changed internal type for groups from uint16_t to uint32_t, in order to match the API

C++ AL:
- utils::MutableReference: deleted operator T&(), which was causing unclear conversion sequences. References cab now be obtained using the ref() method.
- Used size_t and ptrdiff_t types where appropriate

Modules:
- Made several type casts explicit
C++ code: Fixed warnings about breaking strict aliasing rules

Jira: MADLIB-531

Build system:
- Option "-fstrict-aliasing" is now always turned on, so that warnings are more likely to be raised also during debug builds

C++ AL:
- In SystemInforation:: getSystemInformationAndMemoryContext(), void** was reinterpreted as SystemInformation** and caused a warning about breaking strict aliasing rules. The new implementation does not need a reinterpret_cast.
Legacy Sparse Vectors: Cut SparseData.h down to only contain declarations

Jira: MADLIB-510, MADLIB-531

Made sparse-vector headers more suitable for inclusion by C++ code:
- Removed all implementation from SparseData.h and moved it to SparseData.c. This seems more appropriate and also fixed all warnings in C++ code.
- Special values were initialized by aliasing a double array to an int64 array. This is not compliant with strict aliasing rules, and we use a union now.
Added a module for linear-algebra operations, initially with functions [squared_]dist_{1|2}norm() and closest_column().

Jira: MADLIB-532

Linear-Algebra Operations:
- Function closest_column() for determining the column of a matrix that is closest to a vector, according to the given metric
- Functions [squared_]dist_{1|2}norm() for determining the (square) of the Euclidean/Manhattan distance between two vectors. These functions will be needed for k-means.
- Unit tests
- Documentation is currently marked as internal and will thus only appear in the developer documentation. There is no user support for the functions yet!

C++ AL:
- Increased support for Eigen types: (Non-mapped) vectors and matrices can now directly be converted to AnyType (and thus returned or passed to FunctionHandles)
- Added types [Mutable]Mapped{ColumnVector|Matrix} that can now be used as template parameters for AnyType::getAs
- ArrayHandles now understand multi-dimensional PostgreSQL arrays. We store matrices as an array of columns, i.e., in PostgreSQL one would write matrix[col][row] whereas in C++ code the row index comes first (as one would expect)

Linear/logistic regression:
- Minor changes to make use of the [Mutable]MappedColumnVector types.
Linear/logistic regression: More sophisticated and deterministic unit tests

Jira: MADLIB-301

Linear/logistic regression:
- Deleted randomized tests
- Using functions assert, relative_error, etc. from utilities module

Utilities:
- New function relative_error() for vectors
Chi-squared test: Disallow negative inputs

Jira: MADLIB-535

Also improved the wording of two error messages about invalid inputs.
Removed identifier "ignore" from linear-algebra unit tests

Jira: MADLIB-539

The unit tests contained code of the form

SELECT * FROM (
    [...]
) AS ignore

This fails on Greenplum 4.0 and 4.1 because they treat "ignore" as a keyword. The PostgreSQL >= 8.4/Greenplum 4.2 parsers do not get confused by ignore. (The SQL standard defines IGNORE NULLS as an option for window functions).
Probability functions: Improved handling of invalid arguments

Jira: MADLIB-538, MADLIB-541, MADLIB-542, MADLIB-543, MADLIB-548

Fixes:
- Chi-Squared GOF test: return NULL for p-values if d.f. <= 0 instead of raising an error (MADLIB-538)
- "parameter x is not accepting 0 in pareto cdf and pdf" (MADLIB-541)
- "parameter x is not accepting positive and negative infinities in triangular/uniform cdf/pdf" (MADLIB-542)
- "parameter x is not accepting 0 in pareto cdf and pdf" (MADLIB-541)
- "fisher f quantile with NaN as df2 should return NaN, but it raises internal error" (MADLIB-543)
- "rayleigh cdf/pdf are accepting positive infinity as their parameter scale while they should not" (MADLIB-548)