Better error handling for empty values

Blocks (e.g. tasks, handlers etc) can be empty lists
Modules with no arguments (e.g. setup) are handled correctly

Fixes #32