Implement a scalar expression parser

closes #395

This will fail until the `py.test` PR (#384) goes in

- [ ] string tests
- [x] failing (they should) chained comparison tests
Is there anything that stops us from doing this?  

    a op1 b op2 c -> (a op1 b) & (b op2 c)