added tests for shorthand implicit properties
0 -> 0px, 0 -> 0%, empty and null values special cases, width and height use parseMeasurement, more test cases

- all parsers that can accept just numbers change those into strings
- all parsers check that their values are strings
- empty string and null values are special cased to pass through
- parseLength special cases 0 and '0' and returns '0px'
- parsePercent special cases 0 and '0' and return '0%'
- parseMeasurement calls parseLength first and if that succeeds, returns it, otherwise calls parsePercent
- width and height use parseMeasurement
- test cases for all of the above