Support refunds sublist on charges

The `refunds` property on a Charge is now a ChargeRefundCollection. By using a custom deserializer, we're able to support versions of the API which return a plain array. 

TODO

- [x] Add metadata for refunds
- [x] Add metadata for disputes
Would prefer an `else` for this second case, rather than relying on the `return` up top implicitly providing those semantics.