Add an option to create Phases that run handlers in serial

/to @ritch @bajtos 

The PR adds an option (`options.serial`) to allow handlers in the same stage of a phase to be executed in serial and refactor the `run()` method to reduce number of closures.

Here is the issue that I ran into with oAuth2 component.

We have 3 middleware: 
1. express session (create/restore req.session)
2. passport.initialize (sets req.session to req._passport.session)
3. passport.session (depends on 2)

All of them are session related and have to come in order. It makes sense to register 1 with `session` phase.
Then I have to squeeze 2&3 into `session:after`.

I could introduce more phases around session, such as 'session-creation', 'session-auth'. Just wonder if that would lead too many phases. 
A slightly more performant variant saving few if instructions:

```js
var runHandlers = this.options.parallel ?
  function(handlers, done) { async.each(handlers, runHandler, done); } :
  function(handlers, done) { async.eachSeries(handlers, runHandler, done); };
```
  
No need to make that change in this PR though, it's a sort of a silly micro-optimisation.