ENH: Implement DataFrame.value_counts
- [x] closes #5377
- [x] tests added / passed
- [x] passes `black pandas`
- [x] whatsnew entry

This is picking up where https://github.com/pandas-dev/pandas/pull/27350 left off because I think it'd be a nice feature to have. At least one thing that still needs to be done is implementing `bins` when we have only a single column in `subset`, in which case maybe we can just delegate to `Series.value_counts`.