ratio support

was on a fairly long train ride and had some fun... this depends on #16 and should be fairly complete.

the ratio-ratio num ops are written by hand, but the num ops where one argument is int or float are generated.

all of the following work:

```
user => 3/4
3/4
user => 6/8
3/4
user => (+ 3/4 1/2)
5/4
user => (+ 3/4 10)
43/4
user => (+ 3/4 0.25)
1.0
user => (-div 3/4 1/2)
3/2
```

there are some things i'd like to improve (support for `/` and `*`; adding tests), but i think it's better to do that after merging.