Move the 'extraneous' selection into a DiffOptions method

The main use case for this is a diff where some extraneous properties
should not be compared, but some should.  ie: 'unknown_json_keys' are
extraneous by default, but you might want to know that the diff mechanism
will always compare them without the other side effects of treating them as
regular properties (eg, including them on serialization out).  'extraneous'
is quite a large switch, really: and this helps make it more fine-grained.