Design document: More updates for C++ Abstraction Layer

Jira: MADLIB-696

Included a first revision of a class diagram, which outlines the various classes
used to implement modular fold/reduce components. Added descriptions to the
ByteStream and ByteStreamHandleBuf classes.

Included the LaTeX TikZ-UML package written by Nicolas Kielbasiewicz and
available here:
http://www.ensta-paristech.fr/~kielbasi/tikzuml/index.php
Add static_casts around potentially unsafe conversions. Remove unused variables.

Jira: MADLIB-702

Recent versions of gcc reported more warnings than we used to see with gcc 4.1 and
4.2. There is good reason to look at each of these and to provide a fix:
- First, static_casts were added to indicate potentially unsafe type conversions
- Second, unused variables were removed.

Other changes: Remove trailing white space in the affected files.
Fix potentially unsafe code, part II

Jira: MADLIB-702

Changes: Added static_casts to the appropriate types. Changed integer types to size_t
where semantically a better fit. Fixed a case where local variables could potentially
clobbered by a 'longjmp'.
Conditional Random Fields: Fix digit word features and add install-check tests

Jira: MADLIB-699
Fix CRF module to only have one 'W_DIGIT' word feature to represent any digit, add additional install-check tests, and modify to use temp tables when storing temp data (used in module's calculations)
SVM: Fix the SVM classification issue in parallel mode

Jira: MADLIB-690

In parallel mode, classification/regression will fail if there is
no data distributed to certain segments. The root cause is that we
always request a model for each segment. With this fix, we firstly
check the data distribution and omit the segments with no data.

Other changes:
    Removed trailing whitespace
DT Test: Removed use of madlib schema for test

Jira: MADLIB-684

There is no need to use a temporary table for 
test results since a temporary schema is created 
before the test starts. Further, any DB object 
should be created w/o schema prefix, since the 
test is executed in the temporary schema context. 
Drop statements should also be avoided since the 
default schema will be cleaned outside. 
 
Other changes: 
- Removed all trailing whitespace characters.
Trailing whitespace should be removed since it 
adds unnecessary diff lines in the commit.  
CRF: Added ordered aggregates check for install-check

Jira: MADLIB-725
Description: Add ordered aggregates check to crf_train_large
so that it is skipped if the db does not support (e.g. PG8.4)
kmeans_new: handle infinite numbers

Jira: madlib_729
Filter out infinite numbers from kmeans' input.
Quantile: Suppress assignment from float to integer

Jira: MADLIB-601

quantile_big used BIGINT to store the number of rows. The code
needs to calculate quantile_size by multiplying the total number of
rows with the quantile, whose result type is a FLOAT8. The code
tries to assign this result to a BIGINT directly, and this
operation causes problem. To fix this, we coerce a cast on the
result.
Kmeans_new: make kmeans++ method support SVEC

Jira: madlib-730
In current code, we cannot correctly handle SVEC input. In this fix, I
explicitly convert SVEC to array whenever necessary to fix the issues.
The new kmeans: Fixed the bug caused by the commit for MADlib-730

Jira MADlib-734

The commit (f7d1f) for MADlib-730 would convert the centroids column
to float8[] using a wrong way, which fails the install-check. This
commit corrects this.
K-means: Fix k to be of type integer and add warnings
for when k < number of supplied centroids

JIRA: MADLIB-697, MADLIB-712
Fixed kmeans seeding functions and closest_columns to allow number
of centroids k to be of type integer.  Added parameter checks to
ensure k is within a valid range.  Added warnings to seeding
functions for when k < number of supplied centroids.
CRF: Specify MADLIB schema for create_schema_pg_temp()

JIRA: MADLIB-732
Specify MADLIB schema for create_schema_pg_temp() in
feature generaion and viterbi modules.
Build System: Make extension target names unique.

Jira: MADLIB-735

With introduction of PG 9.2 support, we needed to separate target names
for extension.  This allows users to build multiple version at a time.
Naive Bayes: Fixed null probability values in test results

Jira: MADLIB-523

This change addresses a issue in previous code that produced NULL
when unobserved feature values were found in test dataset.
For feature values in tests that are have not been observed in the
training data, we compute the probability of the classification
class producing that feature by using Laplace smoothing on prior
data.
K-means: Add non-finite value checks, fix temp schema bug
in __filter_input_relation, and convert expr_points to float[]

JIRA: MADLIB-403, MADLIB-737
Add non-finite value check for kmeans cset
and add error message when initial centroids have
non-finite values.  Fix __filter_input_relation so that
temp view does not include non-temp schema name.  Fix
simple_silhouette to convert expr_points to type float[].
K-means: Fix drop filtered input views and kmeans seeding
input validation

JIRA: MADLIB-729, MADLIB-742
Fix __filter_input_relation so that it drops the correct temp views
and fix kmeanspp and kmeans_random seeding to check the input from
th filtered view (instead of the original source)
K-means: Add type-checking for expr_point

JIRA: MADLIB-741
Add type-checking for expr_point to return better error message to user.
K-means: Add more relevant error messages

JIRA: MADLIB-741
Add better error messages for invalid schema and table.
K-means: remove old kmeans and cutover to new kmeans

JIRA: MADLIB-728
Cutover from old kmeans to new kmeans