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``?