Fix quasiquote

I think this patch is correct, but we need to discuss the expected result for

```racket
'(`(`,(+ 2 ,(+ 1 2))))
```

Which my changes produce

```racket
'((quasiquote ((quasiquote (unquote (+ 2 (unquote (+ 1 2))))))))
```

But the expected result is

```racket
(append (list (list 'quasiquote
                      (list 'unquote
                            (append (list '+)
                                    (list '2)
                                    (list (+ 1 2)))))))
```

which I think is wrong.

Additionally, we need to resolve the issue with the tests having an extra `'( ... )` around the `(print-values ...)` call. I'm not sure if that's test-case bug or if that's a bug with these particular outputs. I suspect the former though.