Don't make query() a coroutine, just return the future

The caller can decide what to do with it: yield from, add callbacks,
etc. This also makes it work with Trollius!
Raise ValueError if specified query type is invalid
Added CNAME test case