First working draft of async support.

Basic async support is plumbed in.  I have LoginAuth implemented for
both sync and async adapters.  I still want to merge them into a single
non-adapter specific interface similar to the client.Service code but
for now I can compare and contrast the interfaces and their impls to
inform the eventual refactor.

Currently testing with these recipes against a tastypie based site:

    from __future__ import print_function

    import collections
    import syndicate
    import tornado.ioloop
    import tornado.gen
    from syndicate.adapters import sync, async

    creds = collections.OrderedDict(username='test', password='test')

    ss = syndicate.Service(uri='http://localhost:8008/', urn='/api/v1/',
                           auth=creds.values())
    for x in range(3):
        print('SYNC1', len(ss.get('thing')))

    login = sync.LoginAuth("http://localhost:8008/api/v1/login/",
                           method='post', data=creds)
    ss = syndicate.Service(uri='http://localhost:8008/', urn='/api/v1/',
                           auth=login)
    for x in range(3):
        print('SYNC2', len(ss.get('thing')))

    @tornado.gen.coroutine
    def do_request():
        ss = syndicate.Service(uri='http://localhost:8008/', urn='/api/v1/',
                               auth=creds.values(), async=True)
        for x in range(3):
            res = yield ss.get('routers')
            print('ASYNC1', len(res))

        login = async.LoginAuth("http://localhost:8008/api/v1/login/",
                                method='post', data=creds)
        ss = syndicate.Service(uri='http://localhost:8008/', urn='/api/v1/',
                               auth=login, async=True)
        for x in (yield [ss.get('thing') for x in range(30)]):
            print(len(x))

    io = tornado.ioloop.IOLoop.instance()
    io.add_callback(do_request)
    io.start()