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.
 * Avoids trying to provide too many rules concerning known filesystems
   and OSs by using the file name to create a temporary file.
 * 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.

* Includes unit tests for validator