Save exceptions to redis and add better error handling to retrieve the gem specification

Easy debugging for developers

- Allow you to save the exception to a redis list with `push_exception`, you have to manually use it in your rescue block. I'll check with lita authors to see if we can add a cleaner way to catch all the exceptions.
- The exception queue is limited to 20 items.
- You can `pop` the exception from the queue with the command `why computers so bad?`

Fixes #3
@jordansissel I removed all occurence of the OpenStruct in the code and replaced them with a concrete class. Except in the `gem_specification` method where I used a Struct. I want to return an object here because I hope to be able to fix this hack and use the `Gem::Specification.load` method inside the class without requiring the need to shell out.