Optimisations

Most of the information is in each commit message.

The reason I decided to GZip the requests to QSApp is to reduce bandwidth usage.
We can save quite a bit, for example on the plugins info .xml (from [here](http://www.whatsmyip.org/http-compression-test/))

```
http://qs0.qsapp.com/plugins/info.php is gzipped
Original Size: 218.07 KB
Compressed Size: 41.06 KB
Data Savings: 81.17%
```

GZip support [isn't documented](http://stackoverflow.com/questions/2682483/nsurlconnection-nsurlrequest-gzip-support), bit I've used it fine in iOS.

The other changes:

* Better getter/setter methods, hopefully to avoid some crashes (see #1331 for an explanation)
* Fix [this problem](https://groups.google.com/forum/?fromgroups=#!topic/blacktree-quicksilver/zdo_V47DApg)
* Reduce the number of calls to details, after Rob and I discussed it on IRC
* Pops history off the stack when browsing ←. Again, discussed on IRC. You'll notice at the moment if you dance up/down in a folder with →,←,→,← it doesn't work indefinitely. My changes fix this.

Lots of these commits are from a stash made a while back, and 'optimisations' can always be too optimistic, so it's worth keeping a close eye when running with this pull