Fail self-dependence loops in validation.

Result from the example in #512:

```
$ cylc val bar
Self-dependence detected in 'Task':
  line: InitializeTask => ColdTask & InitializeTask & Task
  from: InitializeTask => TaskSubset
'ERROR: self-dependence loop detected'```

@trwhitcomb & @matthewrmshin - please review.