Allow custom user types in API method Req/Resp schemas that implement
json.Marshaler and json.Unmarshaler interfaces.

Consider you have a request message:

    type ListReq struct {
        Limit  int          `json:"limit"`
        Cursor *queryCursor `json:"cursor"`
    }

and

    type queryCursor datastore.Cursor

    func (qc *queryCursor) Cursor() datastore.Cursor {
        return datastore.Cursor(*qc)
    }

    func (qc *queryCursor) MarshalJSON() ([]byte, error) {
        return []byte(qc.Cursor().String()), nil
    }

    func (qc *queryCursor) UnmarshalJSON(buf []byte) error {
        cursor, err := datastore.DecodeCursor(string(buf))
        if err != nil {
            return err
        }
        *qc = queryCursor(cursor)
        return nil
    }

Previously, API config generation would stop with "unsupported field type" error
referring to ListReq.Cursor field.

This commit makes it possible to have custom types directly in a Request or
Response schemas. The only requirement is for that custom type to implement
json.Marshaler and json.Unmarshaler interfaces:
  - http://golang.org/pkg/encoding/json/#Marshaler
  - http://golang.org/pkg/encoding/json/#Unmarshaler

Following the above example, a request

    GET /some/path?limit=50&cursor=<long-base64-encoded-cursor>

will result in correctly decoded cursor which you can use in a service method
right away:

    func (s *MyService) ListUsers(..., req *ListReq, ...) {
        q := datastore.Query("User").Start(req.Cursor).Limit(req.Limit)
        // do something with q, e.g. q.Run() or q.GetAll()
    }