fixing rest api such that nodes or relationships are indexed properly, where before dummy nodes were indexed in their place
changed rest api for create_or_fail semantics: if you request indexing a node under key foo and value bar, and that node or another node is already indexed under foo/ bar, then an error is returned
Merge pull request #1705 from jakewins/restapicreateorfail

fixing rest api such that nodes or relationships are indexed properly, w...
Remove CypherType.isCollection
Use internal rather than scala-based heirarchy for types
Correct behaviour of merging type sets
Rename iteratedType on AnyType to legacyIteratedType

And use innerType on CollectionType
Stop TypeSet inheriting from Set[CypherType]

This allows for a more specific interface without the need to implement
all the methods of Set manipulation
No coerced mergeup
Add indefinite sized type sets
Use indefinite type sets in semantic checking

Resolves multiple type related issues, steming from the incorrect
usage of mergeUp for type constraining, and the use of AnyType() to
represent all types.
Remove DiscreteTypeSet
Fix type calculations of +