Move client spec.
Extract client request into its own file.
An improved path segment implementation.

This implementation handles more complicated uris. It supports:
- multiple uri parameters per segment
- optional uri parameters
Path segments respect required uri parameters.

Trying to render a templated path segment without all required
parameters now throws.
Tokenize uri.

Break uri up into an array of strings, broken up by uri parameter names.
For example, the uri /{resource}list{format} would yield ['resource',
'list', 'format'].
Extracting test helpers.
Introduce a path builder.

Create a path building template function from an array of path segments.
Use new path builder implementation.
Remove old path builder implementation.
Merge branch 'bugs/multiple-path-segments-59454468'