[3.1.next] Properly hydrate numbers after operations in variable assignments

This PR fixes an issue where a number variable's units would be mangled after a binary operation i.e. `*`, `/`.

I've also updated the number validity check and error message to be more inline with Ruby sass.

Fixes https://github.com/sass/libsass/issues/783. Specs added https://github.com/sass/sass-spec/pull/216.