[WIP][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`
- [ ] `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.
will be removed, not private. we need to change the formatter then.

```
'current' => function (ProgressBar $bar) {
                return str_pad($bar->getStep(), $bar->stepWidth(), ' ', STR_PAD_LEFT);
            },
```

Is this possible? You can access a private property from the same class. But since it's a closure, I'm not sure.