This adds another endpoint to fetch a range of block headers.
The behavior is the same as the "blocks" endpoint wrt boundary checks:
- when the end height is more than the number of blocks in the active chain return less blocks than requested
- require 0 <= start_height <= end_height
- start_height and end_height are inclusive
Depends on D16508