Make TypeRange and TypeSpec clearer

Adds documentation and cleans up some tests
Merge pull request #3224 from cleishm/infimum_supremum

Make TypeRange and TypeSpec clearer
Merge branch 2.0-maint into 2.1-maint
Merge branch 2.1-maint into master
Rollback to ff845f71d18c82e52e11d0cc03fc57e41030ae86
Batch importer input from csv files

Initially from Michael Hunger, @jexp

Focuses on seeking in the raw character array stream from the provided
Readable and tries to avoid creating Strings as far as possible. Value
extraction revolves around visiting the character array with an offset and
length and extract the type of value requested.

Joined the Iterable<InputNode> and Iterable<InputRelationship> into an
Input argument to the BatchImporter and added a CsvInput implementation
with factory for header information, possible to read from the provided
node/relationship data files or from any source.

Also added a side-kick thread, wrapping any Readable reading a chunk ahead
in a separate thread so that the actual thread reading input will not have
to wait for I/O.
Added tests for unexpected/invalid input data