New Statistics module (initial version):
- Implemented one-sample t-test and two-sample (pooled and unpooled) t-test
- F-test
- Kolmogorov-Smirnov test
- Mann-Whitney test
- Wilcoxon-Signed-Rank test
- Implemented One-way ANOVA
- Added Pearson's chi-squared goodness-of-fit test (for arbitrary distributions). Can also be used as a test of independence.
- Added unit tests for all of the above

Utility module:
- Added small but common utility functions: assert() and relative_error()

C++ AL / utilities:
- Allow "masquerading" mutable references to be passed by reference to the real type
- Added names for constant-size vectors (so far only for size 2 and 3)

Documentation:
- Added module hypothesis tests
- Added warning for Wilcoxon-Signed-Rank test. This needs to be solved.
Documentation:
- doxysql: Support for aggregate default arguments and the NULL keyword
- Added a bibliography database (in BibTeX format) that we can use in doxygen
- Added amsfonts package to LaTeX generator

Build system:
- Bumped version number to 0.4dev
Documentation:
- Updated hypothesis-tests module. Gave more precise description of what is computed and how. Included example for chi-squared test of independence.
Hypothesis tests / One-way ANOVA:
- Fixed bug in merge function
Changes resulting from discussion around pull request 118.
Hypothesis tests:
- Out-of-bounds checks for transition states
- t-test/f-test: UDAs return NULL in case of insufficient data
- Wilcoxon-signed-rank test/Mann-Whitney test: Updated testing of ties. For WSR tests, I added a new precision parameter. This parameter has to be used in the unit test.
- Disabled module on GPDB4.0 because ordered aggregates are required
- If UDAs are not properly used as ordered aggregates, the error messages are now more informative.
- UDA chi2_gof_test now has default arguments

k-means:
- Fixed a wrong schema name in test
Hypothesis tests:
- Disabled installation on PostgreSQL 8.4 because it does not support ordered aggregates.

madpack:
- Updated GPDB 4.0 Modules.yml file to reflect recent changes in global Modules.yml file.
Sparse vectors:
- In C header file, made several literals long long
- Added conversion functions between legacy sparse vectors and Eigen sparse vectors
C++ AL:
- All files in the PostgreSQL connector now properly declare namespaces (as opposed to assuming that they will be #include'd in the right namespaces). The previous ugly workaround for Doxygen is no longer necessary.
- GP/PG Compatibility functions (implementation of missing APIs) are now header files
- GP now has its own dbconnector.hpp file that should be included
C++ AL:
- The AbstractionLayer class was used like a namespace. This has been corrected in that the AbstractionLayer class has been completely removed. Any occurrences where inheritence was used to import names have been accordingly modified (and corrected).
- The caching of database metadata has been encapusalted in the new SystemInformation, FunctionInformation, and TypeInformation classes.
- Many backend functions have been wrapped by a madlib_* function that puts a PG_TRY()/PG_CATCH() block around the function. This is in the new backend.hpp
- Simplified the files containing UDF declarations
- Included sparse vectors in the type system
C++ AL:
- Added new class FunctionHandle. It is now possible to pass the OID of functions and use and call these inside C++ code like function pointers.
Minor changes resulting from discussion around pull request 139, and a few other minor changes necessitated by the merge.

Hypothesis tests:
- Minor modifications to adapt to C++ AL changes (which occurred between the code review and the merge).
C++ AL:
- Compatibility with PG8.4 and GP4.0. This fixes previous compilation problems.
Viterbi:
- Currently uses correlated subqueries, so I disabled it on GP4.0
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