Move set of varying matches into linked lists
Move struct match out of varying_matches and rename to varying_match.
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
WIP