remove invalid resource types from the metadata

We have seen several mlses list a Resource type in the metadata, but
then never reference in the list of classes. This breaks our
metadata, as we assumed all resources had a class. This fixes that
potential bug.
I think we only actually need to cache the Rets::Metadata::Root#source rather than the whole object:

```
DEVELOPMENT [1] pry(main)> require 'rets'
=> true
DEVELOPMENT [2] pry(main)> client = Rets::Client.new({:http_proxy => 'http://lindsay.priv.estately.com:8080'}.merge(MlsSettings.raw_for("ABOR")[:client])); nil
=> nil
DEVELOPMENT [3] pry(main)> Oj.load(Oj.dump(client.metadata))
=> #<Rets::Metadata::Root:0x007f93ff9607e0
 @metadata_types=nil,
 @sources=
  {"SYSTEM"=>
... lots of info in the hash
to\tPhoto\t3\t\t\t</DATA>\r\n</METADATA-OBJECT>\n</RETS>\n"},
 @tree=nil>
```

I'm a bit hesitant to add ```as_hash``` method because we don't use Oj to cache metadata in the mlses codebase (we use Marshall which is C based and I doubt uses as_hash).