Better handle 0-colum tbl_df when subsetting

This is a little tricky to support commands like mtcars %>% tbl_df() %>% `[`(0) %>% `[`(1:5, ), which should yield a 5 x 0 tbl_df.

Closes #656