Tighter errors for hit_source

If the user sets hit_source to something the requires extra data but that
data isn't stored then throw back an error rather than failing deep in the
guts.