Stop TypeSet inheriting from Set[CypherType]

This allows for a more specific interface without the need to implement
all the methods of Set manipulation
Add indefinite sized type sets