Changing the way we recognize lists

Right now there is a blanding of recognizing a list and validating it.
This change introduces a new method called IsVarList(...) which
checks if a variable is a list and returns true or false. The check is
more complete than the previous check and makes sure that a list is a
proper list and not something that just contains '@'.