Implementation of table and profile extension

Dear team,

Here are a few changes made to the repo to welcome tables and profile extension tables. Because I needed new features, I changed some little things. Below you'll find a summary of my work.

**API**
- New QueryColumn API object.
- Raising exceptions when not manipulating properly the api objects (FieldType, QueryColumn)
- Now using to_api instead of to_hash because sometimes objects return a simple string

**Client**
- Changed response handling. Old handling can be called by passing the last param of api_method to `:result`.

Examples of the hash returned : 
```
# Failure
{ status: "failure", error: { http_status_code: 500, code: "RECORD_NOT_FOUND", message: "No records found in the list for given ids" } }

# Ok
{ status: "ok", data: [{ "EMAIL_ADDRESS_": "user1@email.com", MOBILE_NUMBER_: "0000000001" }, { EMAIL_ADDRESS_: "user2@email.com", MOBILE_NUMBER_: nil }, { EMAIL_ADDRESS_: "user3@email.com", MOBILE_NUMBER_: "0000000000" }] }
```
- By default api_method returns a hash with status, errors, data
- Debug mode is an option that can be passed when configuring the gem. Default value is false. 
```
Responsys.configure do |config|
  config.settings = {
    username: "your_responsys_username",
    password: "your_responsys_password",
    wsdl: "https://wsxxxx.responsys.net/webservices/wsdl/ResponsysWS_Level1.wsdl",
    debug: true
  }
end
```

**Tests**
- Integrated VCR and storing responses in `spec/fixtures/vcr_cassettes`

**Other**
- Added dependencies in the gemspec. Made version selecting less restrictive.
- Fixed the hash rocket syntax and param naming using the _ instead of camel case.
- Internationalization for internal messages. Used the `i18n` gem which is a copy of Rails one. The language is english by default and messages are in `/responsys/i18n/en.yml`

**Notes**
- The error handling in the helper is not the right way to do it because there is no standard response message returned by all API methods. I'm thinking about describing the error handling in each API file (list, table, ...) or a description of all errors in a file that could be used by the helper in case of errors.

Thanks for your comments !
```ruby
    def self.format_response_hash(response, action)
      formatted_response = { status: "ok" }

      return formatted_response unless response.body.has_key? "#{action}_response".to_sym

      if response.body["#{action}_response".to_sym][:result].is_a? Hash
        formatted_response[:data] = handle_response_types(response.body["#{action}_response".to_sym])
      else
        formatted_response[:result] = response.body["#{action}_response".to_sym][:result]
      end

      formatted_response
    end
```
A little re-factoring, re-naming, and removing the explicit `self.` since the method is already a class method