Add optional path param support

{
    "apis": [
        {
            "path": "/foo(/{optional})",
            "operations": [
                "parameters": [
                    {
                        "dataType": "string",
                        "name": "optional",
                        "required": false,
                        "paramType": "path"
                    }
                ]
            ]
        }
    ]
}

If the optional parameter is inputted, say the value is val, the
request path will become /foo/val.
Otherwise the path will become /foo

If one of the path parameter is set to be optional, all of the path
parameter with the same must be optional.
The following path:
    /foo(/{optional})/{optional}
is invalid. invalid path exception will be throw