IDL collect routine

Updated to work in the same way as the Python collect.

Variable names can be specified using keyword var="name"
or as a parameter e.g

IDL> n = collect("density")

If a name is not found, it is first checked for case mismatch, and now
checked for abbreviations. For example:

IDL> n = collect("den")

would find the variable name "density" and use that. If the abbreviation
is ambiguous, nothing will be read, and the possible names
will be printed.