[2.2] 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.
This doesn't account for dual-char characters, something like this would cover all valid unicode code points:

    int maybeACodePoint = random.nextInt( 0x10ffff );
    if(Character.isDefined(maybeACodePoint) return Character.toChars(  maybeACodePoint );