Added a base package for testing.

Implemented Mocker interface and MockTransport.
The initial reason I introduced the order was for test retrying code (fail, fail, and success), but I was wrong. This assumption is not generic enough to make it a official library.

I will focus on the following
1. Easy way to assert requests. One of the idea is to have a function that invokes an arbitrary function and args with a mocked RoundTripper and return the recorded http.Request.

```go
func RequestFromFunc(f interface{}, args ...interface{}) (*http.Request, error) {
    values := []reflect.Value{}
    recorder := newRecorder()
    ctx := cloud.NewContext("project-id", &http.Client{Transport: recorder})
    // replace the ctx
    values = append(values, reflect.ValueOf(ctx))
    for _, arg := range args[1:] {
        values = append(values, reflect.ValueOf(arg))
    }
    // Executes and just drops the result
    reflect.ValueOf(f).Call(values)
    return recorder.request()
}
// you can use this like
expReq := RequestFromFunc(pubsub.Ack, ctx, sub, ackID)
// expReq.Method, expReq.URL, expReq.Body are expected values
// when invoking pubsub.Ack with the above args (except for ctx).
```