[Fixes #885] API Explorer: Link Generation

1) Expose the simplified relative path template by cleaning up constraints, optional and catch all tokens from the template.
2) Expose the parameters on the route template as API parameters.
3) Combine parameters from the route and the action descriptor when the parameter doesn't come from the body. #886 will refine this.
4) Expose optionality and constraints for path parameters. Open question: Should we explicitly expose IsCatchAll?
nitpick: you have 4 combinations here of null/not-null. separate out the one invalid case into it's own branch of the if-else to make it clear that it's special.