Add a discard_invalid option for hashes & arrays

Sometimes a mutation might be provided an array/hash of random stuff. If there is stuff we don't like in one of these objects, it might be nice to have the option of stripping out the invalid elements rather than just marking the whole thing invalid and failing. The `discard_invalid` option allows us to do just that!