Add support for custom server distributions

Also put in a simple test to be sure it works and some documentation to help people use it.
I might do this as

```js
var server_distribution = opts.custom_server_distribution || ModulaServerDistribution
this.servers = new server_distribution(opts.servers)
```