Some fixes to plist and pset

Before this things like `pset{Integer}([1,2,3])`,`pset(Integer[1,2,3])` or `plist{Integer}([1,2,3])` wouldn't work because Integer is abstract. Use of `jointype` makes nice things possible as well (e.g. Union also finds the common parent type). Tests still pass.