Added new files to Cmake

Created new copies of the save and load Ascii algorithms so i have a base for writing version 2.

They have been added to cmake

Refs #7732
Now saves in the desired format

The data is now saved in the follwing format with each spectra grouped together:

{spectrum number}

[optional]{comment marker}X,Y,E[optional],DX

X(0,0){separator}Y(0,0){separator}Z(0,0)[optional]{separator}DX(0,0)

X(0,1){separator}Y(0,1){separator}Z(0,1)[optional]{separator}DX(0,1)
...

{spectrum number}
...

Refs #7732
Created Test classes and added to CMake

Copied the original tests so i have a base for my own

Refs #7732
Made Basic changes to headers and loadascii2's cpp

Changed thigns like the version, author etc. no actual functional changes

Refs #7732
Lowered version 1 confidence

I've lowered teh defualt confidence of LoadAscii version 1 as it was preventing LoadAscii version 2 from being chosen by the Load selector

Refs #7732
Altered LoadAscii Cumstom dialog

The LoadAscii Dialog now changes depending on the version being invoked.

Version 2 has the new comment indicator feild

Refs #7732
Tided code and formatted

Removed some commented out code and some trailing spaces

Performed a "format Document" command form Visual studio to add indentation.

Refs #7732
Added new format, removed debug code

Added the new Scientific Notation option to the dialog

Removed the std::cerr calls I added when debugging

Changed the placeing of the header code so that the header is no longer per specta, but per file

Refs #7732
Written the unit test for version 2

Createa s unit test for the new format based on the old test.

Compared to the original the unit test is now split into two.

Refs #7732
New version of LaodAscii written

The new verison of LoadAscii was going to be based on the original, and it has been, but not as much as was initially intended, and it ended up a full rewrite.

The Loader will load the form of files saved by SaveAscii version 2, but not version 1. The format has changed that much.

It is slgihtly flexible in that it will load files that SaveAscii wouldn't wirte, but htis only extends as far as it'll accept blank lines as equivelent to spectra IDs, will allow 2 collumns minimum (implying that E and Dx are 0), and will ingnore lines staritng wiht a comment character. However, it is still strict enough that it will expect any standards set at the start of the file to be continued thoughout. This means number of bins per spectra, number of columns per bin, inclusion or omittance of spectra IDs, comment characters and delimiters.

Refs #7732
Clarified some errors and comments

Errors now include the line number in the file if it's avialable to them.

Some comments have been deleted or improved

Refs #7732
Refactored Save Algorithm

SaveAscii now validates the comment indicator and user defined separator.

The code has been refactored to split off the spectra writing code into a mthod with two overloads: one taking an int and one taking an iterator.

Some varables have become private member variables to help with the new methods

Refs #7732
Load Algorithm now compatible with custom separators

The Save Algorithm had always been able to define a custom spearator, but ht eLoad algorithm wouldn't recognise them.

Custom separator code now added to both algorithm and custom dialog.

Refs #7732
Removed a redundant method, and corrected some things.

isAscii() was originally included as I copied LoadAscii v1 originally, and as it's not actually used internally i've removed it form v2. v1's isAscii is only used once (and by another class), and LoadAscii (the v1 class) is specifically used then, so it's safe to remove it from v2. In theory, that call to v1 should probably be using a file descriptor instead.

The spacers 2d array now has it's bounds corrected for both the new item, and reducing the second dimension as much wasn't used.

The Filename property has had an error in it's description corrected.

Refs #7732
Changed the type of exception thrown for spearators and comments

Save and Laod now both throw std::invalid_argument rather than std::runtime_error if validation on separator and comment characters fail.

Refs #7732
Added value checking to SaveAscii2Test

SaveAscii2Test now checks some values.

Refs #7732
Started LoadAscii2Test

Rewritten the checkData and runtest methods as well as amalgamated the file writing methods into one method.

Written some test cases, no fail cases yet.

Refs #7732
Removed soem comments form SaveAscii2Test

The comments were the way i was origianlly going to check for values, but it didn't work, the comments are now gone.

Refs #7732
Improved validation and other features of Save

Save now closes the ostream. It didn't before and it's a wonder why it never crashed.

The comment and separator validation has been improved to disallow - + and e as they're part of the scientific notation. the separator = comment check is now bundled into the comment's regex check.

Spectra min/max have now got a positive check.

Headers now use the specified spearator character.

Refs #7732
Various fixes to Load

Improved some long lines.

Fixed an issue where all the separator options weren't being shown.

CustomSeparator now has the same property settings as it's SaveAscii2 counterpart.

The comment and separator validation has been improved to disallow - + and e as they're part of the scientific notation. The separator = comment check is now bundled into the comment's regex check.

Refs #7732