[Console] ProgressBar developer experience

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | #11184
| License       | MIT
| Doc PR        | WIP

## TODO

- [x] Create a `getCurrent` method to replace `getStep`
- [x] `ProgressBar::setCurrent` should auto-start the ProgressBar.
- [x] You should be able to pass `max` to `start`
- [x] `barCharOriginal` not needed. Logic can simply be part of `getBarChar`
- [x] `getStepWidth` is internal information that should not be public
- [x] when verbosity set to quiet, the progress bar does not even need to execute all the logic to generate output that is then thrown away
- [x] Allow to advance past max.
- [x] negative max needs to be validated
- [x] `getProgressPercent` should return float instead of int.
I think `setPosition` and `getPosition` makes most sense. `current` doesn't mean anything. Every setter could be named `current`, e.g. `setCurrentBarChar`, `setCurrentFormat`. So I'm in favor of `setPosition` or `setValue` (similar to http://api.jqueryui.com/progressbar/ ) and the setter should be changed/deprecated as well.