Binary ops

All binary ops working including int to float casting when needed.  

closes #99
if you made it:

```ocaml
SExprFloat(SFloatBinOp(match get_cast_side (lt, rt) with
| Left -> SFloatCast(lhs), o, rhs
| Right -> lhs, o, SFloatCast(rhs)
| _ -> lhs, o, rhs
)
```

then you can drop all mention of the "side" in the generator code