WIP: use eval expression parsing as replacement for Term in HDFStore
extension of @cpcloud #4037

allows natural syntax for queries, with in-line variables allowed

some examples
`"ts>=Timestamp('2012-02-01') & users=['a','b','c']"`

`['A > 0']`

```
dates=pd.date_range('20130101',periods=5)
'index>dates'
```

Todos:
- [ ] update docs / need new examples
- [ ] API changes (disallow dict, and separated expressions)
- [ ] tests for `|` and `~` operators, and invalid filter expressions
- [ ] code clean up, maybe create new `Expr` base class to opt in/out of allowed operations
    (e.g. `Numexpr` doesn't want to allow certain operations, but `PyTables` needs them,
     so maybe define in the base class for simplicity, and just not allow them (checked in `visit`),
     which right now doesn't allow a `generic_visitor`)
- [ ] can `ops.Value` be equiv of `ops.Constant`?
