Fail self-dependence loops in validation.

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