Support phantom.callback

This pull request will add support for phantom.callback with the following usage;

```
var phantom = require('phantom');

phantom.create(function(ph) {
  ph.createPage(function(page) {
    page.set('someValue', ph.callback(function() {
      return 'my callback';
   });

   //can also handle nested callbacks could also use page.setPaperSize
   page.set('paperSize', {
      format      : 'A4',
      margin      : '0px',
      orientation : 'portrait',
      header : {
         height: '1cm',
         contents: ph.callback(function() {
           return '<h1>I AM HEADER</h1>'; 
         })
      }
    }); 
 });
});
```

All tests pass and it should close the following tickets, https://github.com/sgentle/phantomjs-node/issues/199 and https://github.com/sgentle/phantomjs-node/issues/142