Allow specifying a custom finder key.

This allows support for cases where the API does not use the primary
key in the URL, for example /users/username rather than /users/1.

This has required a major rework of the request_path methods as the
correct path can no longer be inferred from the parameters alone.  The
decision as to whether to request a collection_path or resource_path has
been pushed up into each occurence of the calling code.

Closes #148