Promises Refactor

I found that my project using pi-gpio cleaned up quite well with promises.  Here's a promise based flavor if interested.  

I think this could go even further, and benefit by a "Pin" object for usage like:

```
// gpio.read could expect a "Pin" object, which gpio.open would create if only a pinNumber is passed, and resolve.
gpio.open(16)
  .then(gpio.read)
  .then(function(pin) {
    console.log('pin value', pin.value);
    gpio.close(pin)
  })
```

Thanks!