regex + wildcard

I should have continued my previous pull request #817, but I messed up (I used a different fork).

````R
N=10; 
set.seed(1)
DT <- data.table(
  id =  sample(5, N, TRUE),
  v1 =  sample(5, N, TRUE),                        
  v2 =  sample(5, N, TRUE)                   
)
DT[,.SD, .SDcols = w("v*")]
DT[,.SD, .SDcols = w("v*", "v*")]
DT[,.SD, .SDcols = w("v*", "id")]

DT[,.SD, .SDcols = -w("v*")]
DT[,.SD, .SDcols = -r("^v.*")]
DT[,.SD, .SDcols = r("^v[a-z]")]
DT[,.SD, .SDcols = -r("^v[a-z]")]
````

Whether or not this pull request is merged, it would be nice to have the exact same grammar (and code) for column selections in `setkeyv`, `.SDcols`, and `unique` etc (except `by` of data.table, since it accepts f(var), but also  "var, var2" and symbol of variables). 
My preference would be to restrict the use of NSE to specific calls such as  -, w, r and (not implemented for .SDcols) .() and list (allowing .SDcols = var (or by = var in unique etc) could break existing codes).