Supervisor modes

I changed operations so that it can be applied to replicated nodes, including bind, read, next, wait_needed, is_det, declare. There are still two operations 'fetch'  and 'reply_fetch' to be done. They are used to fetch values when a dataflow variable is bound to another.
I don't know why we brought this function back.  It does almost the exact same thing as put, and duplicates a ton of code.  Write a version of put that takes a function, executes it and then calls the other one with the value.  I purposely removed this function on master.

For instance:

```
put({Module, Function, Args}, Next, Key, Table) ->
    Value = Module:Function(Args),
    put(Value, Next, Key, Table).
```

Fewer lines of duplicated code to worry about maintaining.