Add dining philosophers problem as functional test

This version uses separate channels to pick up and put down
particular forks. Every fork may be used twice.