Random forest

Implemented the Random forest for classification and regression.

## Parallelism
Every tree is built in parallel.

## Can deal with big data
When the data is too big to be loaded into memory, each tree can be trained using partial data. By setting `partial` to `true` in `train()` function, each tree uses only the data given by its partition.

However, training with full dataset is also supported. When the full dataset can is small enough to be loaded into memory, you can set `partial` to `false`, thus each tree uses the full data.

## Reference
For more algorithm details, please read the following materials:
1. [Mahout Random forest](https://cwiki.apache.org/confluence/display/MAHOUT/Random+Forests)
2. [Random Forests Leo Breiman and Adele Cutler](http://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm)