refactoring and test color method

- change `hash` method to support lower and uppercase, so it can used by `color` or `guid` as well
- change color method to use `hash` method and make it bit simpler
- put common chars, numbers into global static variables
- remove unused arguments and variables
- remove `min:0` as option for `natural` as this is the default option
- add tests for color
Manually merge @eskimoblood changes