Path data optimization improvements.

Writes absolute coordinates if it's shorter. Fixes #79 and #95
Relative coordinates rounding now takes in account accumulating error. Points will be closer to original values.
Rounding is smarter like 2.49 to 2.5.
Fixed bug with straightening curves (which have been passing tests because of another bug) #144
Also fixes #158 #205 #210