Update swagger to OpenAPI3 (#1644)
Update swagger to OpenAPI3 (#1644)

## What does this PR do ?
Updates the old swagger route, to [OpenApi 3.0.1](http://spec.openapis.org/oas/v3.0.1) and a few more tweaks.

![openapi](https://user-images.githubusercontent.com/2495908/84024732-b24a0d80-a98a-11ea-8475-b2f00fc6eaf4.gif)

- Includes a link to Kuzzle Documentation
- Groups routes by controller using tags (Greatly improves readability)
- Includes custom metadata **If** an OpenApi 'info' object is detected in the route object (Set's defaults data if object is incomplete)
- Supports request body definition

## **Route.info** example
```js
  {
    verb: 'get',
    url: '/credentials/:strategy/_me',
    controller: 'auth',
    action: 'getMyCredentials',
    info: {
      description: 'Custom Route description',
      parameters: [{
        name: 'strategy',
        in: 'path',
        required: true,
        description: 'Parameter description',
        schema: {type: 'string'}}
      ]
    }
  }
```
_More info about parameters [here](https://swagger.io/docs/specification/describing-parameters/)._

### How should this be manually tested?
Having Kuzzle running, go to [/swagger.json](http://localhost:7512/swagger.json), then copy/paste into [https://editor.swagger.io/](https://editor.swagger.io/)

### What's next?
Another PR would update **each** Kuzzle's API routes to **fully** support open api
kuzzleio/kuzzle,kuzzleio/kuzzle,kuzzleio/kuzzle,kuzzleio/kuzzle