Vector rules fns

Providing the first of the "vectorised rules" functions.  Nothing uses the vector features yet.

Some tasks remain :

* Need to ensure these changes don't impact load speeds adversely.
* We still need to write  the "other" vector coordinate functions -- at least the vector height code before we can really take advantage of this.
At first glance, I don't see any special extra complication with that, so hopefully it is a straightforward development from what we have here.

The main test for this "test__convert_vector_time_coords.py" is pretty messy.
The mechanics are largely tested by the separate tests for the support routines, but the main routine needs "something":  I can't quite get my head around testing "only" the relevant parts of it's behaviour, separate from the "generic vectorised function", so some of the testing effectively duplicates the lower-level functions testing, even though they have their own tests.

The "!_reshape" call handles scalars naturally, it is the num2date conversion that requires special handling.  I think it makes sense to do it here because if we don't allow scalars in this call then the vectorisation code will have to treat them specially when calling here, which seems to be just "exporting" the inconsistency.