Modify A::D::Query to use POE events rather than while(1)

**Which issues (if any) does this change solve? (please link them here)**
n/a

**Briefly describe your fix. Are there any important details we should know about?**

* Uses POE's events correctly to generate the "infinite loop" effect
* Some other small changes for efficiency

**Are you having any problems? Do you need our help with anything?**
n/a
@zachthompson @killerfish @jagtalon @jdorweiler what do you guys think about making the output a little more helpful, I was thinking of something like this, maybe only useful for multiple IAs triggering/returning

```
You entered: " blah"
3 Instant answers were triggered:
   - DDG::Goodie::Foo
   - DDG::Goodie::Bar
   - DDG::Goodie::Baz
2 Instant Answered returned a result:
  - DDG::Goodie::Foo => {
        answer => "...",
        html => "..."
    }
  - DDG::Goodie::Bar => {
       structured_answer => {
           ...
        }  
  }
```

I'm just wondering if printing the Object is really all that useful? The only things likely to change are the answer, html, is_cached, is_unsafe -- we don't really need to see the private methods etc each time.

If you guys think this is a decent idea I'd be happy to make a GH Issue, or if I'm being crazy, let me know ;)