Pass scenario to hooks

Allows to determine scenario name and so make hooks more useful and
scenario-oriented.

The `scenario` argument is optional in your hook functions. Both
following examples are fine:

    this.BeforeHook(function (scenario, callback) {
      callback();
    });

    this.AfterHook(function (callback) {
      callback();
    });
Add Hook spec example for single-arg function (close #143)