Factor linear and radial gradients out of query.

I think this can be merged.

The eventual goal is to provide the ability to output as much standalone javascript as possible.

Since the main difficulty is queries, we start by shrinking them to the absolute minimum. 
I'll do this in stages, here we remove gradients since the only thing that gradients were getting from the
browser is a unique id and this can easily be handled on the haskell side.

The next step is to factor out images and patterns, I think? this is possible although we made need a library like Juicy-Pixels to read the image width and height. I might need a bit of help with the js though as I cant seem to figure out how to load the image without displaying it.