allow for cancelling of open/close through callback

Sometimes a close can be triggered without the program explicitly calling `Drop.close`, e.g. if the user clicks outside of the Drop. This change allows the program to intervene and cancel the Drop's open/close if it wants.

* allow for passing in of `onOpenIntent` and `onCloseIntent` callbacks
* if these callbacks return `false`, then the open/close won't happen

e.g.
```
new Drop({
  onCloseIntent: function() {
    if (dontWantToClose) {
      return false;
    }
  }
});
```