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.

This was not really my decision, it is just the form that the existing generic rules code in rules.py requires in the 'dims_and_coords' lists -- it requires a None where you might expect it to use a ().
TBH I think that should preferably be fixed, but I think it is out of scope here and it's simpler to just go along with it for now.
BTW I'm not sure the rules can currently handle multidimensional coords properly either, so possibly we may get to fix this when we implement the actual vectorise code.