Implement NRows for various backends

Allows differentiation between `expr.count()` (will eventually ignore `NA`
values) and `expr.nrows()` (never ignores `NA` values).
Should we put `nrows` in with `nunique`?  The definition of `istabular` might be under flux.  My guess is that `istabular` should be something like `len(ds.shape) == 1 and isrecord(ds.measure)`.