Move struct match out of varying_matches and rename to varying_match.

Also give it a constructor.

Also make num_components a member function.
Store producer-centric locations in varying_match.

This will allow a future patch to use varying_match for non-generic
varyings.
Store varying_match objects in a hashtable by producer var
Add type information to varying_match.

At the moment this is redundant since the same information is also
available through producer_var->type, however future patches will
introduce some varying_match objects in which producer_var is NULL.
Have record() return a varying_match data structure even for non-generic varyings.
Use a simpler algorithm for computing initial transform feedback array size.

Since we are likely to overestimate, realloc the array once we have
determined its true size.
Move call to store_tfeedback_info() into assign_varying_locations().

This will allow us to take advantage of the varying_match objects
(which only exist during execution of assign_varying_locations()) in
tfeedback_decl::store().
Remove tfeedback_decl::assign_location.  Instead, store the
association between tfeedback_decl and varying_match earlier in
linking, and then look up the location at the time of
tfeedback_decl::store().
Simplify the handling of gl_ClipDistanceMESA
WIP