Cleaned up specs, added query params support.

Paths can now be defined as objects (as not just strings) containing two
parameters: 'path': what was previously just the raw string for the
path, and 'params': an object containing parameters to pass along in the
request.

@example:
q = {
    a: {
        root: '/api/root/'
        , paths: [
            {
                path: 'rj:b'
                , params: {
                    foo: 'bar'
                }
            }
            , 'rj:c'
        ]
    }
}