Support path and query parameters correctly.

Summary:
We had been accepting path and query parameters as if they were form
parameters in the body instead of from the URI as they should be. Fix
that so we conform to the Swagger spec, swagger-ui is able to test
all of our APIs, and most importantly we can implement APIs that
follow common REST conventions.

Represent each path segment as a case class. One possibility is a
literal path segment, and another is a path parameter with a parameter
name and path matcher type that we need to use in spray-routing.

Break out the parameters by type as we need to handle them all
differently. In the process, also check for parameter types that we
don't support.

Also fix a bug with operation positions that was preventing us from
supporting multiple operations per API path. Operation position is
not part of the Swagger 1.2 spec, so get it from zipWithIndex instead.

Make use of all this information in the generated code by using the
spray-routing directives to extract the parameters of the corresponding
types, then passing them directly into the handler method. Now the
message concept is not needed, so delete that code and template.

Test Plan: See http://phabricator.scale-data.com/D972 for the generated code.

Reviewers: hv, j, prateek.pandey, nitro

Reviewed By: nitro

Subscribers: eng

Differential Revision: http://phabricator.scale-data.com/D973