Convert vector vertical coords

This PR implements the `pp_rules._convert_vertical_coords` function which caters for array data as well as scalar values.

Assumes that the following arguments will remain as scalar:
* lbcode
* lbvc
* stash

Assumes that the following arguments may be either scalar or array:
* blev
* lblev
* bhlev
* bhrlev
* brsvd1
* brsvd2
* brlev

BDAC dataset contains the following vertical coordinates, of which **level_height** and **sigma** are bounded:
* **pressure** -- using *blev* for points
* **model_level_number** -- using *lblev* for points
* **level_height** -- using *blev* for points, and *brlev* and *brsvd1* for bounds
* **sigma** -- using *bhlev* for points, and *bhrlev* and *brsvd2* for bounds

Replacement for #1392
I think there's a distinct case of something falling between the cracks here. How about a third case to handle case when some have bounds and some don't, by giving them all bounds, some of which are both set to the corresponding point value:
```python
if not np.all(brsvd1 == brlev) and np.any(brsvd1 == brlev):
    lower_bound = np.where(brsvd1 == brlev, blev, brsvd1)
    upper_bound = np.where(brsvd1 == brlev, blev, brlev)
    bounds = np.vstack((lower_bound, upper_bound)).T
```
At least this way you get a coordinate.