Implement NRows for various backends

Allows differentiation between `expr.count()` (will eventually ignore `NA`
values) and `expr.nrows()` (never ignores `NA` values).
Can we eliminate the `NRows` class and just define

```Python
def nrows(expr):
    return nelements(expr, axis=(0,))
```