Tie AccessProvider back to service Provider.

To issue a revokation request, I needed to know the Identity API
endpoint.  This endpoint exists in the Provider used to create the
AccessProvider.  This change threads a link back to the Provider.
diff --git a/authenticate.go b/authenticate.go
index 7665304..edd447c 100644
--- a/authenticate.go
+++ b/authenticate.go
@@ -44,6 +44,7 @@
 	Token          Token
 	ServiceCatalog []CatalogEntry
 	User           User
+	provider       Provider `json:"-"`
 }
 
 // Token encapsulates an authentication token and when it expires.  It also includes
@@ -125,6 +126,9 @@
 			&access,
 		},
 	})
+	if err == nil {
+		access.provider = p
+	}
 	return access, err
 }
 
@@ -142,5 +146,12 @@
 
 // See AccessProvider interface definition for details.
 func (a *Access) Revoke(tok string) error {
-	return nil
+	url := a.provider.AuthEndpoint + "/" + tok
+	err := perigee.Delete(url, perigee.Options{
+		MoreHeaders: map[string]string{
+			"X-Auth-Token": a.AuthToken(),
+		},
+		OkCodes: []int{204},
+	})
+	return err
 }
diff --git a/authenticate_test.go b/authenticate_test.go
index e08a0a6..1d4d1f5 100644
--- a/authenticate_test.go
+++ b/authenticate_test.go
@@ -53,7 +53,7 @@
 `
 
 func TestAuthProvider(t *testing.T) {
-	tt := newTransport()
+	tt := newTransport().WithResponse(SUCCESSFUL_RESPONSE)
 	c := TestContext().UseCustomClient(&http.Client{
 		Transport: tt,
 	})
@@ -86,7 +86,7 @@
 }
 
 func TestTenantIdEncoding(t *testing.T) {
-	tt := newTransport()
+	tt := newTransport().WithResponse(SUCCESSFUL_RESPONSE)
 	c := TestContext().
 		UseCustomClient(&http.Client{
 		Transport: tt,
@@ -126,7 +126,7 @@
 func TestUserNameAndPassword(t *testing.T) {
 	c := TestContext().
 		WithProvider("provider", Provider{AuthEndpoint: "http://localhost/"}).
-		UseCustomClient(&http.Client{Transport: newTransport()})
+		UseCustomClient(&http.Client{Transport: newTransport().WithResponse(SUCCESSFUL_RESPONSE)})
 
 	credentials := []AuthOptions{
 		AuthOptions{},
diff --git a/reauth_test.go b/reauth_test.go
index c1911e3..62d3e7e 100644
--- a/reauth_test.go
+++ b/reauth_test.go
@@ -107,6 +107,9 @@
 func (my *MyAccess) AuthToken() string {
 	return ""
 }
+func (my *MyAccess) Revoke(string) error {
+	return nil
+}
 
 func TestReauthHandlerUsesSameAccessProvider(t *testing.T) {
 	fakeAccess := &MyAccess{}
diff --git a/servers_test.go b/servers_test.go
index 46ba6db..d95fa40 100644
--- a/servers_test.go
+++ b/servers_test.go
@@ -20,6 +20,10 @@
 	return ""
 }
 
+func (ta *testAccess) Revoke(string) error {
+	return nil
+}
+
 func TestGetServersApi(t *testing.T) {
 	c := TestContext().UseCustomClient(&http.Client{Transport: newTransport().WithResponse("Hello")})