Properly process "optional" parameter tag
Properly process "optional" parameter tag

Summary:
While revamping the doc I noticed this bug. Right now we completely ignore the value of `optional`, which may lead to undesired behavior.
The syntax for parameter definition that we have right now is
  {
    "name": "parameterName",
    "optional": bool, // Optional
    "default": "defaultValue" // Optional, implies optional=true
  }
In the code completely ignore the value of `"optional"` and assume it `true`.

User could potentially write next code
  {
    "name": "test",
    "optional": false
  }
Which wouldn't do what expected.

This is not a huge bug, it just makes things more fragile and not clean to document.

Reviewed By: jmswen

Differential Revision: D5121173

fbshipit-source-id: 09a958b76ff55fd2c18ff6054c34aa478a4f3a39

facebook/mcrouter,facebook/mcrouter,facebook/mcrouter,facebook/mcrouter