Color functions: implement Contrast.

Note that there is a bug in less.js (I am submitting a bug report) in
the contrast function when a threshold is given, so I have changed the
expected result and added more test-cases.
If validation fails for the function return null, so we don't alter the
output.

A test-case to support this is coming, it was in less.js test-cases.
Color functions: Contrast now supports failing silently if the first
parameter isn't a color, to support filters I guess. Test-cases updated
with additional color testing cases from less.js.

This matches the test-case from less.js, included in
functions-color.less
now.

The bug in less.js is unclear actually, the documentation suggests that 
the threshold parameter to contrast should be a percentage but it
doesn't
work if it is. Less.js has updated their test-cases to use decimal
numbers
rather than percentages. I have included those cases, but left in the
percentage cases as we handle those "correctly", but don't match
less.js.