Implement nelements for various backends

Allows differentiation between `expr.count()` (will eventually ignore `NA`
values) and `expr.nelements()` (never ignores `NA` values).

Also adds an `nrows` property of symbols
If we want it to be "give me the number of elements on Nth axis" then it can't be a traditional reduction.  It'll have to be something else.  If you look right now at `s.nelements(axis=0)` you'll see that it suggests a datashape of `var * int`.  Not sure how it would be defined in this case, maybe something like

    [3, 2, 2, 1, 1]

My definition is equivalent to saying
```Python
data.nelements(axis=whatever)

# same as

data[:] = 1  # set all elements to 1
data.sum(axis=whatever)
```