Make individual controller actions asynchronous.

hrm, I don't think there is a clean way to do it, unless you abstract out the function that you're actually running.  which is _ok_, I guess, but leads to harder to understand code.  It would look something like:

```go
var action func(ix iteration)
if diff < 0 {
  action = func(ix iteration) {rm.deleteReplica(ix)}
  diff = diff * -1
} else if diff > 0 {
  action = func(ix interation) {rm.createReplica()}
}

wg.Add(diff)
for i := 0; i < diff; i++ {
  defer wg.Done()
  go action(i)
}
wg.Wait()
```
I guess that's a little less repetitive, but I find it harder to read.  If you feel its better, I'm ok to switch.