Request now uses explicit getters and setters
Refactor gateway method parameters

Instead of passing Request and CreditCard objects directly, you now simply pass an array of options to each method. This has the advantage of being more flexible, as it allows gateways to extend the Request class if they need.