DataFrame.eval doesn't handle Ellipses
I'm not sure whether supporting this is worth it. I don't know if it opens up complexities for operations like `df.eval("A[...]")`.

```python
In [4]: df = pd.DataFrame({"A": ['a', 'b']})

In [5]: df.eval("A == ...")
```

```pytb
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-5-1db591136780> in <module>
----> 1 df.eval("A == ...")

~/sandbox/pandas/pandas/core/frame.py in eval(self, expr, inplace, **kwargs)
   3357             kwargs["target"] = self
   3358         kwargs["resolvers"] = kwargs.get("resolvers", ()) + tuple(resolvers)
-> 3359         return _eval(expr, inplace=inplace, **kwargs)
   3360
   3361     def select_dtypes(self, include=None, exclude=None):

~/sandbox/pandas/pandas/core/computation/eval.py in eval(expr, parser, engine, truediv, local_dict, global_dict, resolvers, level, target, inplace)
    320         )
    321
--> 322         parsed_expr = Expr(expr, engine=engine, parser=parser, env=env, truediv=truediv)
    323
    324         # construct the engine and evaluate the parsed expression

~/sandbox/pandas/pandas/core/computation/expr.py in __init__(self, expr, engine, parser, env, truediv, level)
    823         self.env.scope["truediv"] = truediv
    824         self._visitor = _parsers[parser](self.env, self.engine, self.parser)
--> 825         self.terms = self.parse()
    826
    827     @property

~/sandbox/pandas/pandas/core/computation/expr.py in parse(self)
    840     def parse(self):
    841         """Parse an expression"""
--> 842         return self._visitor.visit(self.expr)
    843
    844     @property

~/sandbox/pandas/pandas/core/computation/expr.py in visit(self, node, **kwargs)
    439         method = "visit_" + node.__class__.__name__
    440         visitor = getattr(self, method)
--> 441         return visitor(node, **kwargs)
    442
    443     def visit_Module(self, node, **kwargs):

~/sandbox/pandas/pandas/core/computation/expr.py in visit_Module(self, node, **kwargs)
    445             raise SyntaxError("only a single expression is allowed")
    446         expr = node.body[0]
--> 447         return self.visit(expr, **kwargs)
    448
    449     def visit_Expr(self, node, **kwargs):

~/sandbox/pandas/pandas/core/computation/expr.py in visit(self, node, **kwargs)
    439         method = "visit_" + node.__class__.__name__
    440         visitor = getattr(self, method)
--> 441         return visitor(node, **kwargs)
    442
    443     def visit_Module(self, node, **kwargs):

~/sandbox/pandas/pandas/core/computation/expr.py in visit_Expr(self, node, **kwargs)
    448
    449     def visit_Expr(self, node, **kwargs):
--> 450         return self.visit(node.value, **kwargs)
    451
    452     def _rewrite_membership_op(self, node, left, right):

~/sandbox/pandas/pandas/core/computation/expr.py in visit(self, node, **kwargs)
    439         method = "visit_" + node.__class__.__name__
    440         visitor = getattr(self, method)
--> 441         return visitor(node, **kwargs)
    442
    443     def visit_Module(self, node, **kwargs):

~/sandbox/pandas/pandas/core/computation/expr.py in visit_Compare(self, node, **kwargs)
    740             op = self.translate_In(ops[0])
    741             binop = ast.BinOp(op=op, left=node.left, right=comps[0])
--> 742             return self.visit(binop)
    743
    744         # recursive case: we have a chained comparison, a CMP b CMP c, etc.

~/sandbox/pandas/pandas/core/computation/expr.py in visit(self, node, **kwargs)
    439         method = "visit_" + node.__class__.__name__
    440         visitor = getattr(self, method)
--> 441         return visitor(node, **kwargs)
    442
    443     def visit_Module(self, node, **kwargs):

~/sandbox/pandas/pandas/core/computation/expr.py in visit_BinOp(self, node, **kwargs)
    561
    562     def visit_BinOp(self, node, **kwargs):
--> 563         op, op_class, left, right = self._maybe_transform_eq_ne(node)
    564         left, right = self._maybe_downcast_constants(left, right)
    565         return self._maybe_evaluate_binop(op, op_class, left, right)

~/sandbox/pandas/pandas/core/computation/expr.py in _maybe_transform_eq_ne(self, node, left, right)
    482             left = self.visit(node.left, side="left")
    483         if right is None:
--> 484             right = self.visit(node.right, side="right")
    485         op, op_class, left, right = self._rewrite_membership_op(node, left, right)
    486         return op, op_class, left, right

~/sandbox/pandas/pandas/core/computation/expr.py in visit(self, node, **kwargs)
    438
    439         method = "visit_" + node.__class__.__name__
--> 440         visitor = getattr(self, method)
    441         return visitor(node, **kwargs)
    442

AttributeError: 'PandasExprVisitor' object has no attribute 'visit_Ellipsis'
```


Note that on 3.8 this actually seems to work, since it uses a different term.