Rewrite NumberValue to handle arbitrary unit combinations.

Now matches Sass semantics much more closely, and understands
intermediate units in expressions like "1px * 1px / 1px".
Some parser fixes.  Allow arbitrary units.

The C-based scanner ignored restriction lists due to only accepting
tuples and lists, whereas yapps usually passes in sets.  It should now
be in line with the Python scanner.

Also, it turns out that variables in functions could cause parse errors
that were being ignored; this is now fixed.