gocql/gocql — pull request #250 by matope (2014-09-20 07:53:05+00:00)
Title: Add MapScanCAS() to capture a prev row safety.

``INSERT IF NOT EXISTS`` CQL query returns all columns of the prev row if not applied.
But the sequence of non-PK columns which are agnostic for developer.

For example, even if you create table user(name,deleted,created_at), it would be returned in order of (name, created_at, deleted).
```sql
cqlsh:test> create table user( name ascii primary key, deleted boolean, created_at timestamp) ;
cqlsh:test> describe table user;

CREATE TABLE user (
name ascii,
created_at timestamp,
deleted boolean,
PRIMARY KEY (name)
) WITH ....

cqlsh:test> insert into user (name) values ('matope') if not exists;

[applied]
-----------
True

cqlsh:test> insert into user (name) values ('matope') if not exists;

[applied] | name | created_at | deleted
-----------+--------+------------+---------
False | matope | null | null
```

This specification causes unmarshal errors on ScanCAS().
For example, this code(http://play.golang.org/p/HvgWJjXd17) fails
```go
if applied, err := session.Query(stmt).ScanCAS(&user, &deleted, &created_at); err != nil { // <- This code fails.
log.Fatal("2nd insertion: ", err)
}
```
> 2014/09/19 14:49:28 2nd insertion: can not unmarshal X timeuuid into *bool

And this passes.
```go
if applied, err := session.Query(stmt).ScanCAS(&user, &created_at, &deleted); err != nil { // <- This code passes.
log.Fatal("2nd insertion: ", err)
}
```

I think it would be nice if there are any interfaces to capture prev value of CAS safety like ``MapScan()``.
So, I've added ``MapScanCAS()`` a CAS version of ``MapScan()``.

I don't know if it is a good implementation to solve this, but could you review this PR please?