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).