REF: simplify CSVFormatter
- [ ] closes #xxxx
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry

Refactor CSVFormatter
----------------------
1. Put data validation in setters
2. Extract helper methods and properties

@ivanovmg: Welcome to `pandas` !  I like the general direction of this PR.

If you can address all of @jreback's comments, I think we should be good. I addressed the issues raised.

* 46f593d87 (HEAD -> refactor/csvs, origin/refactor/csvs) REF: refactor number formatting
* 6041666d0 TYP: add type annotations as reviewed
* 3da7207bb REF: rename regular -> flat as reviewed

For some reason the changes are not yet reflected here in PR page. @jreback, is there anything else to be done on this PR? Or good to go? thanks @ivanovmg very nice