Numeric ops

This signature disallows comparison operators, no?
```
type Binary[A, B, S <: HList] = Op[A :: B :: S, A :: S, A]
```