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
Oh i see, I was thinking that `t.nelements(axis=(0, 1))` would mean "give me the total number of elements between both axes", it sounds like you're thinking more like "shape". Is that correct?