Added vulcan middlewares support.

@jeremyschlatter Middleware specs are also "objects" with fields and stuff so I think it is clearer to have them represented as structs, with an ability to "dump" them to a string representation. E.g. check the flagman middleware here: https://github.com/mailgun/scroll-flagman/blob/master/flagman.go and its usage example in blackbook.

@klizhentas I can certainly rename `Format()` to `ToJSON()`. Auth is implemented in the private repo (the link I gave to Jeremy above) because it is done via flagman, all other middleware implementation are coming (circuit breaker will be the first one).