Query builder, an option to flat or nested queries

`query_builder` attribute it's a flexible way to change the behavior when building request's query or body from Hashes. Available options: `[:flat, :nested]`

Example:
```    
  HTTPI.query_builder # => HTTPI::QueryBuilder::Flat (by default)
  HTTPI.query_builder = :nested # => HTTPI::QueryBuilder::Nested
```

You can also customize and set your own query builder. Example:
```        
  class CustomBuilder
    def self.build(query)
      # query is a Hash and you have to return a String
    end
  end
  HTTPI.query_builder = CustomBuilder
```    

Thanks to @bvicenzo PR #125 
This PR also fixes #122