Clean up specs

Hello again :smile: 

Here are a couple changes that clean up and make the tests a bit more maintainable. I moved the logic for testing API Objects (item or challenge) into a shared example which pulls the objects attributes and defines tests for all of them. 

I also cleaned up the client specs a bit by moving the `VCR.use_cassette` into around filters so they don't have to be repeated every time. I also leveraged some of RSpec's cool matchers to change things like `expect(val.empty?).to_not eq(true)` into `expect(val).not_to be_empty`. Because the tests for `#get_featured_items` and `#get_challenges` was pretty much the same at this point, I moved them to being generated  by iterating over `{ get_featured_items: Twenty20::Item, get_challenges: Twenty20::Challenge }` and inserting the method name and expected object type where appropriate!

Thanks!
This is kind of a neat trick you can use by leveraging how RSpec handles scoping. Because attributes gets redefined before each example, you can merge directly into it with no adverse effects later. Also because `instance` references `attributes`, you don't have to redefine it every time, you only have to change the attributes themselves.