Improve variable argument support

Rework variable argument support to add support for named variables, improve error reporting, and fix crashes on edge cases like zero arguments passed into a chain of variable arguments.

To support named arguments, note that arglists have been upgraded to be lists of Arguments (with values matching the passed-in Expression) instead of being just lists of Expressions. This has required changes to a number of functions which work with lists to cope with either ArgLists or Lists and their different wrapped types, adding a value_at_index method to lists to pull out the value if required.

(Corrects output to satisfy the libsass/composed-args test - to be upgraded in a forthcoming patch; also significantly improves the match for the libsass/var-args test, no regressions in other tests as of working tests from before the big refactor!)