Implement DataFrame.value_counts
closes #5377

(This is a feature request stated in the form of a PR.)

This change makes it easy to count the number of times each unique row appears in a data frame. It also removes an unnecessary difference between DataFrame and Series (i.e. the existence of the `value_counts` methods).

```
        >>> df = pd.DataFrame({'num_legs': [2, 4, 4], 'num_wings': [2, 0, 0]},
        ...                   index=['falcon', 'dog', 'cat'])
        >>> df
                num_legs  num_wings
        falcon         2          2
        dog            4          0
        cat            4          0

        >>> df.value_counts()
        (4, 0)    2
        (2, 2)    1
        dtype: int64

        >>> df1col = df[['num_legs']]
        >>> df1col
                num_legs
        falcon         2
        dog            4
        cat            4

         >>> df1col.value_counts()
        (4,)    2
        (2,)    1
        dtype: int64
```

- [ ] tests added / passed
- [ ] passes `black pandas`
- [ ] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry
