Payloads with sources now give more useful errors for nesting

Because the creation of the Payloads happens later in the process
(rather than during the build file parsing), we still seem to lose track
of which file the error occurred in... is there a solution for that?

- Adds validation to SourcesMixin and switches it to inheritance with
  SourcesPayload
- Adds a Payloads test file

Reviewed on https://rbcommons.com/s/twitter/r/586/