Change 'or' to '||'

Fixes #3.
Add a proper __repr__ to ORExpression nodes
Simplify index parsing

The ElementsBranch node has been removed, it can be represented
with the new WildcardIndex.  Previously foo[0] and foo[*] parsed
to two different structures.  Now both use a SubExpression node and
the wildcard is just represented as a WildcardIndex instead of an
Index node::

    SubExpression(AST(...), WildcardIndex())

Which makes the constructed ASTs more consistent.

I've also updated the parser grammar to not require separate rules
for root indices vs. indices in a subexpression.
Simplify wildcard values parsing

Similar to wildcard index simplification, now
foo.* is written with a subexpression node::

    SubExpression(Field(foo), WildcardValues())

where WildcardValues just multimatches the values of the dict.
This also simplified the grammar such that another rule could be
collapsed into the existing subexpression rule.
Support root level wildcards

Fixes #4.

This also cleans up some of the grammar rules::

    expression : subexpression
               : STAR

    subexpression : expression DOT expression
Verify whitespace separator not required for '||'
Merge branch 'rename-or' into develop

* rename-or:
  Verify whitespace separator not required for '||'
  Add a proper __repr__ to ORExpression nodes
  Change 'or' to '||'
Merge branch 'root-wildcard' into develop

* root-wildcard:
  Support root level wildcards
  Simplify wildcard values parsing
  Simplify index parsing