REF: prepare dataframe info for series info
- [ ] closes #xxxx
- [ ] tests added / passed
- [ ] passes `black pandas`
- [ ] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry

Precursor for #37320

Refactor ``pandas/io/formats/info.py`` to simplify further introduction of ``Series.info``.
Basically what is done here:
 - Move docstring to ``BaseInfo`` from ``DataFrameInfo`` - supposedly will be shared with ``SeriesInfo``
 - Move ``col_count``, ``ids`` from ``BaseInfo`` to ``DataFrameInfo`` (will not be relevant to ``SeriesInfo``)
 - Move ``memory_usage_bytes`` to ``DataFrameInfo`` (will have different implementation for ``SeriesInfo``)
 - Extract ``InfoPrinterAbstract``. Concrete classes will differ by the ``_create_table_builder``
 - Move common methods and properties from ``DataFrameTableBuilder`` to ``TableBuilderAbstract``
 - Extract ``TableBuilderVerboseMixin`` from ``DataFrameTableBuilderVerbose`` as the generator functions there will be used for verbose series info builders

I suggest moving the substitution decorator for the docstring from ``pandas/core/frame.py`` to ``pandas/io/formats/info.py`` later on in a separate PR.