pull available resources out into separate function
pull endpoints from object => service endpoint hash

Prior to this commit, we were manually constructing the endpoint for a
particular service, even though SFDC tells us where that particular
class of resource should be accessed. The manual construction had two
major flaws: 1) we couldn't access cross-instance endpoints, as would be
the case of trying to traverse to the `identity` endpoint, and 2) we
assume that SFDC's endpoint pattern will remain constant across
versions, even though there's no guarantee from SFDC that will be the
case. This commit utilizes the object-to-endpoint hash, retrieves it
upon login and caches it in our state so that when we request a
particular class of resource, like `sobject` or `query`, we retrieve the
resource only from where SFDC said we could find it.
We can still manually construct an endpoint, as may be the case with
`limits`; however, we at least log this dangerous behavior.