refactor url construction and request execution to separate methods

The GraphAPI.request() method previously did both URL construction,
request execution, and response parsing.  However, the Graph API
pagination feature returns pre-constructed URLS for subsequent pages.

This commit separates the request execution and response parsing into
a separate method that may be called directly with the URL provided by
a pagination response.
add support for pagination

The Graph API pagination feature returns along with each partial
result a URL for fetching the next page of results.  We add a
GraphAPI.paging() method that fetches and returns the next page of
results.