Visiting an NDArray shouldn't create a new expression id.

@fegin please look.

I use `expr_like` to create a new expression (instead of reusing self), for consistency with the other operators.  (It's possible, though unlikely that at some point an optimization would be interested in modifying the shape or dtype of an ndarray).