Implement first/last reductions

We would need to figure out if we want `.schema` to be a full `DataShape` object or if we're comfortable with it being just a coretype.  This and the definition above for `all` don't match in that regard.  Alternatively one could improve datashape so that this distinction isn't important.