Fix saveImage bugs and update documentation

`saveImage` wasn't calling the `callback` method upon successful writing of the file to disk. It also would cause an exception if the caller didn't specify `callback`.

`saveImage` also doesn't take in a `figure`; it takes in an associative array, one of whose elements is a `figure`, and whose other elements specify format, width, and height.  I have updated the documentation and examples to reflect this behavior.

I really want to fix the API to be more in line with the Python API, where you pass in an actual `figure` and also specify parameters for format, width, height.  I will file an issue separately to discuss changing the public surface area of the `saveImage` API.  This PR leaves the behavior almost the same except now callers should expect a callback on successful save whereas before they would only get a callback under an error condition.