TEIIDDES-1857: Creates a cross-platform file name validator

* FileNameValidator
 * Provides a single class that validates a file name against the underlying
   filesystem.
 * Single, centralised point for determining validity of file names.
 * Provides some fundamental rules concerning known filesystems and OSs
   which the file name must adhere to before even a test file is created.
 * Provides set of options to enhance the validator such as ability to add
   other reserved characters, add reserved words and modify the directory
   where the temporary file test is conducted.

* Factory provided with interface allowing alternative implementations

* Includes unit tests for validator implementation
TEIIDDES-1857 - additional api added to ensure you can validate specific
systems

TEIIDDES-1857 - update tests