UM fields array structure identification for fast loading.

Context: 
The key external interface is "group_structured_fields"  (in iris.fileformats.um._fast_load_structured_fields).
 * this returns 'FieldCollation'-s ..
 * .. which are in effect triples of (vector_dims, dimension_elements, element_arrays_and_dims)
 * .. so something else can turn that information into cubes.

There is no actual user API yet. 
Most probably will be an experimental 'iris.load'-like function, which will take filenames + return cubes.
> actual_values_elements used to have the 'name' information within it

Yes, but that version simply ignored the names and *assumed* one-one correspondance with the first arg -- which is pretty nasty !

> instantiate ordered dictionaries rather than standard dictionaries 

I was trying not to change the (existing, merged) structured array code, so this is why I'm working around it instead.
@rhattersley would you maybe prefer to just fix it there ?

Ok, I basically agree with all your reservations.  
Unless @rhattersley definitely prefers to add the ordering into the structured_array_identification, then I think the sanest approach is probably to accept two lists of name+data (as that's how we have it), allow any *ordering* in the second, but check they have all the same names.  I'll check that out...