A few minor changes to the optimizations.

Get rid of unused before/after arrays.
When forcing nodes, return a reference to the underlying array.
Update Black-Scholes benchmark to be slightly more realistic
(different maturity, rate and volatility values for each "stock")
Backout HasStrictTraits change.
Backout changes from pretty print branch.
add Alternating Least Squares on Implicit Feedback method
add streaming kmeans application
fix implicit feedback als
add pca
Merge pull request #129 from spartan-array/update-optimizations

A few minor changes to the optimizations.
fix operator so it won't produce opposite result when we deal with distarray and expr
Merge pull request #133 from EasonLiao/fix_operator

fix operator
fix a small bug in rpc
Merge branch 'master' of github.com:spartan-array/spartan into fix_operator
Merge pull request #134 from EasonLiao/fix_operator

fix repository
fix lda model to normalize the topic term distribution
Merge pull request #131 from MaggieQi/master

add Alternating Least Squares on Implicit Feedback method
Merge pull request #130 from EasonLiao/pca

add pca
add item-based collaborative filtering.
add test for item-based cf
Some updates for optimization.
1. For Map and Reduce, they call fetch_base_tile() instead of fetch() if the
   argument is Broacast. This function fetch the corresponding tile in the
   base array. It means these tiles are not broadcated immediately.
2. Current optimization sequence eliminates the chance to do parakeet for
   those MapExprs which have been fused into ReduceExprs. So we should do
   ReduceMapFusion last.
3. We should visit children inside ParakeetGeneration.visit_MapExpr().
   Otherwise we lose the chance to do parakeet for some MapExprs.
4. If all deps for a MapExpr are not FnCallExpr, it is not worth to do
   parakeet for it. (According to experiments, it usually get worse
   results)
Visiting an NDArray shouldn't create a new expression id.