fixed some minor bugs in the blend functions

Some minor things in the blend functions I discovered when I added tests to the Dart-port:

overlay: a<128 is always true because 'a' has been divided by 255
dodge: results in values larger than 255 for large 'a' and large 'b'
burn: results in values smaller than 0 for small 'a' and small 'b'
divide: never goes negative