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
Added a sampling module, currently containing only weighted_sample().

Sampling module:
- Added a data-parallel UDA for weighted sampling of a single row
- This uses boost's Mersenne Twister, and the random_device class for initialization. Instead of linking to boost's random library, I for now added boost's random_device.cpp to the repository. As we move forward, we probably want to extend our build system to build boost libraries on demand. Because of problems with the boost v1.46.1 headers in the context of using random_device, I bumped the required boost version to v1.47 and the automatically downloaded version to 1.49.0.
Added a module for linear-algebra operations with two initial functions.

Linear-Algebra Operations:
- Function closest_column() for determining the column of a matrix that is closest to a vector, according to the given metric
- Function squared_dist_2norm() for determining the square of the Euclidean distance between two vectors
Both functions will be needed for k-means

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.
New k-means implementation, rewritten as an iteratively called aggregate function

k-Means:
- Complete redesign and rewrite. Main new features: 1) The new implementation is nothing more but an iteratively called aggregate function. No conversion between temporary tables and iteration states takes place. 2) The distance metric is fully pluggable. 3) Clear separation between the seeding algorithm and Lloyd's local search heuristic 4) The new code should be much easier to read and maintain
- Uses C++ AL
- First incarnation of general Python abstraction layer (currently still in kmeans.py, though). Main feature: No data movement between backend and PL/Python.

Utilities:
- Implemented a C function exec_sql_using() that can be used to emulate the EXECUTE ... USING command that is not available before PostgreSQL 8.4. This seems to be the only "guaranteed lossless" way to write function arguments into a table.