Lots of changes:

+ Force byte values to be integers
+ Clamp RGBA values into valid ranges
* Some refactoring
* API change: `changeValues()` is now `processFile()`
* More comments
* Refactored test runner to be more flexible