remove config.mode, allow algo to be a function

Fixes #10, #11 

I'm not sure here, for `mtime` you could do the slicing in the hasher itself, e.g.:

```js
bust.config({
    algo: function(file) {
        var hash = file.stat.mtime.getTime().toString();
        if (this.length) hash = hash.slice(-this.length);
        return hash;
    }
});
```

Inside the `algo` function, `this` references the `config` object as we're invoking it as `config.algo()`. Though, I've been pondering whether to don't expose the `config` object in these cases.

All in all, this change does not break back-compat, there is just a small drawback that people who use the `length` option and upgrade gulp-buster will find that all their hashes have changed, and this will also require documentation changes.