remove config.mode, allow algo to be a function

Fixes #10, #11 

My initial thought was to emit an error when the returned value is not a string (as @codename- has implemented [here](https://github.com/UltCombo/gulp-buster/blob/8c3a92eef5cc904eed1b8b66b660ba15d8df4511/index.js#L65-L67)), but I can see pros and cons to both sides.

I'd prefer to emit an error than end up with a hash of `"undefined"` or `"[object Object]"`, on the other hand if the user returns a number it would be more practical for the plugin to do the casting.

I don't think it'd be worth to add special handling depending on the returned value's type, I'm tending towards throwing an error if the returned value is not string to keep consistency with the `formatter` handling.