add support for png screenshots

png seems to produce better quality images.

note that this is a breaking change, because the module api changes:

```js
// before:
screenshot(chrome, Number, callback)

// after:
screenshot(chrome, { quality: Number, format: String }, callback)
```

jpg@100:
![svgs-to-fonts-demo-spec](https://cloud.githubusercontent.com/assets/1761758/5563065/160ceebc-8e09-11e4-8333-ca3e8e3159c2.jpg)

png@100:
![svgs-to-fonts-demo-spec](https://cloud.githubusercontent.com/assets/1761758/5563066/161287b4-8e09-11e4-93ee-84d160c45027.png)


I use two criteria:
1. Is this the same tick as the calling tick
2. Will it consistently fail, given the input
if these are fulfilled, the it should throw. 

Nodecore use similar convension, see for example:
* https://github.com/joyent/node/blob/master/lib/net.js#L820
* https://github.com/joyent/node/blob/master/lib/fs.js#L209