refactor: extract method for iterating over paged results set

Several APIs in the library had code that was very near to being
identitical.  This change extracts that logic into the DeviceCloudConnection
object.  New tests are added against this core code and existing tests
for existing functionality pass without modification (as they should).
refactor: make DeviceCloudConnection a public interface object

The connection object has utility within the library but is also
potentially useful for external users.  The fact is, our library
does not implement all features of the device cloud and likely will
never.  I see no reason not to make this interface part of the public
API (although marked as being low-level).

Also, fix some small Py3 test failures with new tests.
Merge pull request #21 in PYTHON/python-devicecloud from refactor-results-pagination to master

* commit '763ddb45aa14424c2afcef898532cf8ff96afc67':
  refactor: make DeviceCloudConnection a public interface object
  refactor: extract method for iterating over paged results set
groups: add basic support for getting information about groups

I've written and rewritten this functionality a few times before it
got to its current state, but I think I am OK with it as it is now.
A few notes:

1. When calling `get_groups`, the groups returned will not have
   their children associations populated.  This is to allow for
   getting just a single group via a condition.  In cases where
   you want to do something with the hiearchical assocaitions, one
   should really be using `get_group_tree_root` anyway.
2. Group objects to not provide direct access to devices.  This could
   be added in the future, but for now I decided that it was easy enough
   to pass in the group path as a condition parameters to `get_devices`.
Merge pull request #22 in PYTHON/python-devicecloud from get-groups-feature to master

* commit '8c0f964a9b236035e125d76e43d15b7b94f45cdf':
  groups: add basic support for getting information about groups
Merge remote-tracking branch 'origin/master'