Move optimizer visitor to linq4j

And add ExpressionType.modifiesLvalue to avoid inlining in such cases