Result should return type_casted values

The `type_cast` should be done earlier. `select_*` uses the values
provided by the `result` class, so it makes sense to use the `type_cast`
method from the adapters and passed into the class (`column_types`).

*before*

```
Person.create(
  tags: ["cfabianski", "cedric"],
  tag_ids: [4, 8, 9]
)

query = Person.where(["? = ANY (tags)", "cfabianski"])
row   = Person.connection.select_one(query)

=> {"id" => "1", tags" => "{cfabianski,cedric}", "tag_ids" => "{4,8,9}"}
```

*after*

```
Person.create(
  tags: ["cfabianski", "cedric"],
  tag_ids: [4, 8, 9]
)

query = Person.where(["? = ANY (tags)", "cfabianski"])
row   = Person.connection.select_one(query)

=> {"id" => 1, "tags" => [cfabianski, cedric], "tag_ids" => [4, 8, 9]}
```