Add support for returning table alias on Columns().

Currently the driver discards the column alias and the original table
name. This change adds a new configuration parameter to include the
table alias with the column name.

This is useful because when mapping columns to structs, it is impossible
to distinguish between duplicate column names when doing JOIN queries.
Rather use the following to avoid unnecessary branching:
```go
if rows.mc.cfg.columnsWithAlias {
	for i := range columns {
		columns[i] = rows.columns[i].tableName + "." + rows.columns[i].name
	}
} else {
	for i := range columns {
		columns[i] = rows.columns[i].name
	}
}