title: Cayenne Expression.fromString is not maintaining Parenthesis order
body: <p>I have a string </p>
  
  <pre><code>((effectiveDate &gt;= "11/01/2015") and (effectiveDate &lt; "04/30/2016")) and (not ((name like "*John*")) and (name like "*Smith*") and (age &gt; "20"))
  </code></pre>
  
  <p>After I convert it to an expression it is not maintaining the parenthesis order</p>
  
  <pre><code>    Expression exp = Expression.fromString(origExpStr);
      System.out.println(exp);
  </code></pre>
  
  <p>This is resulting in </p>
  
  <pre><code>(effectiveDate &gt;= "11/01/2015") and (effectiveDate &lt; "04/30/2016") and not ((name like "*John*")) and (name like "*Smith*") and (age &gt; "20")
  </code></pre>
  
  <p>Logically it could mean the same but I would like to maintain the parenthesis order to maintain the proper grouping.</p>
  
  <p>Is there a way to maintain parenthesis order after converting to an Expression</p>