Fix #compare_with for file scopes

The default Machinery::Object#compare_with implementation considers
the whole object different if one of the attributes differs. In the case
of file scopes there are two attributes, though, which can differ
between the compared objects independently (:extracted and :files).

The new implementation in FileScope - which the scopes inherit from now -
compares those two attributes independently from each other which
results in more reasonable diffs.

Fixes #339
Raise an exception if a FileScope contains unsupported attributes