Break the import cycle :wrench:

I'll have to bring in an interface if we add functionality to v3.Client for
use in the resource packages.
diff --git a/openstack/identity/v3/tokens/requests.go b/openstack/identity/v3/tokens/requests.go
index f300519..5be55ed 100644
--- a/openstack/identity/v3/tokens/requests.go
+++ b/openstack/identity/v3/tokens/requests.go
@@ -3,7 +3,6 @@
 import (
 	"github.com/racker/perigee"
 	"github.com/rackspace/gophercloud"
-	identity "github.com/rackspace/gophercloud/openstack/identity/v3"
 )
 
 // Scope allows a created token to be limited to a specific domain or project.
@@ -14,8 +13,8 @@
 	DomainName  string
 }
 
-// Create authenticates and generates a new token.
-func Create(c *identity.Client, ao gophercloud.AuthOptions, scope *Scope) (gophercloud.AuthResults, error) {
+// Create authenticates and either generates a new token, or changes the Scope of an existing token.
+func Create(c *gophercloud.ServiceClient, scope *Scope) (gophercloud.AuthResults, error) {
 	type domainReq struct {
 		ID   *string `json:"id,omitempty"`
 		Name *string `json:"id,omitempty"`
@@ -62,6 +61,8 @@
 		Auth authReq `json:"auth"`
 	}
 
+	ao := c.Options
+
 	// Populate the request structure based on the provided arguments. Create and return an error
 	// if insufficient or incompatible information is present.
 	var req request
diff --git a/openstack/identity/v3/tokens/urls.go b/openstack/identity/v3/tokens/urls.go
index 2c100ab..5b47c02 100644
--- a/openstack/identity/v3/tokens/urls.go
+++ b/openstack/identity/v3/tokens/urls.go
@@ -1,7 +1,7 @@
 package tokens
 
-import identity "github.com/rackspace/gophercloud/openstack/identity/v3"
+import "github.com/rackspace/gophercloud"
 
-func getTokenURL(c *identity.Client) string {
+func getTokenURL(c *gophercloud.ServiceClient) string {
 	return c.ServiceURL("auth", "tokens")
 }