This PR does two things:
1. Introduce `-opt-bisect=<inclusive_integer_interval>` for running
ranges of passes, where `inclusive_integer_interval` could be:
- `-1` to run all pases
- `0` to run no passes
- `10-12` to run passes 10 through 12
- `10-12,15-18 `to run passes 10 through 10 and 15 through 18
`-opt-bisect-limit=N` now maps to `-opt-bisect=1-N`
2. Introduces `IntegerInclusiveInterval` in ADT to represent these
intervals and the ability to parse string ranges (from the command
line). The motivation to move this into ADT is that both `opt-bisect`
and `debug-counter` need to parse intervals from the command line.
`reduce-chunk-list` also relied on a interval object, so I refactored
that to use `IntegerInclusiveInterval` as well.