Improved StripeObject#to_hash

Calling `to_hash` on any `StripeObject` returns the values hash, which may have nested `StripeObjects`. To get a hash of a `StripeObject` where its nested attributes are also converted to hashes currently requires a round-trip via JSON, which is ugly:

```
customer = Stripe::Customer.all.first
JSON.parse(customer.to_json)
```

This pull request avoids the round-trip by making `to_hash` work on nested attributes as well. The only difference from the round-trip via JSON is that `to_hash` will result in symbol keys, which I believe is preferable, since `@values` has symbol keys as well.
Yup, you got it – acc is accumulator :)

Returning `acc` is necessary because `Hash#[]=` returns the value that was assigned. If we don’t explicitly return `acc`, after the first iteration `acc` will not be a hash and it will blow up. Example:

```
>> ["a", "b", "c"].inject({}) do |acc, letter|
?>   acc[letter] = letter.upcase
>> end
IndexError: string not matched
	from (irb):7:in `[]='
	from (irb):7:in `block in irb_binding'
	from (irb):6:in `each'
	from (irb):6:in `inject'
	from (irb):6
	from /Users/vladimir/ruby/default/bin/irb:11:in `<main>'
>> ["a", "b", "c"].inject({}) do |acc, letter|
?>   acc[letter] = letter.upcase
>>   acc
>> end
=> {"a"=>"A", "b"=>"B", "c"=>"C"}
>> 
```