Replace a duplicated test with a more useful one
Fix Property metaclass magic for multiple-trait property types

Duck-typing property types implies *all* of the traits in the property
class, not just the one defined in that class.  This was preventing its
use for types like ListProperty, which has two traits: ``coll`` and
``list``.  Fix it by storing the full 'traits' tuple in DUCKWARGS and
adding that to the combined list of traits for the property being
created.
Deal with some empty MultiFieldSelectors corner cases

Make it logically false when empty, too.
Allow diff on completely filtered collections to pass

This would previously throw:

    ======================================================================
    FAIL: test_filtered_collection_compare (test_mfs_diff.TestDiffWithMultiFieldSelector)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/home/samv/projects/normalize/tests/test_mfs_diff.py", line 344, in test_filtered_collection_compare
        {},
      File "/home/samv/projects/normalize/tests/test_mfs_diff.py", line 108, in assertDifferences
        differences = set(str(x) for x in iterator)
      File "/home/samv/projects/normalize/tests/test_mfs_diff.py", line 108, in <genexpr>
        differences = set(str(x) for x in iterator)
      File "/home/samv/projects/normalize/normalize/diff.py", line 524, in compare_collection_iter
        id_args = options.id_args(coll_type.itemtype, fs_a)
      File "/home/samv/projects/normalize/normalize/diff.py", line 314, in id_args
        options['selector'] = self.compare_filter[any]
      File "/home/samv/projects/normalize/normalize/selector.py", line 514, in __getitem__
        assert len(self.heads) == 1, "can't compare filtered collection"
    AssertionError: can't compare filtered collection

This strange exception happens to be right, but actually the code should
simply skip comparing anything in this case anyway.

Closes #45
0.5.3 maintenance release