Added onBeforeChange callback

This PR allows the developer to bind custom callbacks to be called before the change event occurs.

```javascript
var introJs = introJs();

introJs.onbeforechange(function() {
    console.log('This is fired BEFORE the change occurs');
});

introJs.onchange(function() {
    console.log('This is fired AFTER the change occurs');
});

introJs.start();
```

**PS:** For some reason, there is a lot of changes associated with this PR, most likely due merging from the master branch.