Flo's Pull Request

@florrain @12and1studio @mrocco64 - I'm creating this pull request so we can collaborate/review the code.
Definitely this is not the right solution.

I wanted to keep the same logic in all the api objects that's why I carried on this.

Yes right. What about named parameters ? For instance `ListMergeRule.new(insertOnNoMatch: false, matchColumnName1: 'EMAIL_ADDRESS')` 
This would allow to do `ListMergeRule.new`, by default default values are used and then if you want to override these values you just pass them explicitly to the constructor.

We were talking about this this Morgan yesterday because it is the way Savon handles his parameters: `@client.call(method.to_sym, message: message, cookies: cookie, soap_header: header)`