Optimization bugs fixed

1. Expressions inherited from Expr should have compute_shape(). If an expression doesn't have compute_shape(), RotateSlice() may force it to evaluate during optimization.
2. DistArray-like classes should have a sparse property.
3. DistArray-like classes should have a tiles property. (Only add for LocalWrapper in this patch)
4. A new children_order for Map and Reduce. We have to iterate over children_order when the order must be protected.