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.
Let's use actual Erlang pattern matching here, which makes the code *way* easier to work with.

Something like:

```
await_responses({error, Node, no_key}....
await_responses({error, next_exist, OldNext}..
```