ifelse was broken

`ifelse` was returning an `int`(`NA_LOGICAL`)  instead of the appropriate value for `NA` for the target type. For example it was failing to compile: 

```
CharacterVector ifelse_( LogicalVector test, CharacterVector yes, CharacterVector no){
  return ifelse( test, yes, no ) ;
}
```

But more dangerously, it was not failing to compile for NumericVector but quite likely did not do what you would expect, i.e. if the test was `NA` you'd get the value of `NA_INTEGER` instead.