Refactored code. Refs #8685.
Implemented matrix workspace output. Refs #8685.

Also added several unit tests for the new feature.
Enabled to split events by vector splitter. Refs #8685.
Enabled to split events using splitter matrix workspace. Refs #8685.
Added method to split events. Refs #8685.

Added and tested a method to filter/split events with spliters instored
in vectors.
Enabled to generate filters in matrix workspace. Refs #8685.

1. Enabled to generate filters and output them in MatrixWorkspace;
2. Enabled to generate filters in parallel (not finished yet).
Enabled to return with debug message. Refs #8685.
Added new unit test for returning matrix workspace. Refs #8685.
Add debug output. Refs #8685.

1. Enabled to output more detailed debug information;
2. Code refactored for parallelization by OpenMP.
Adapted to new FilterEvents splitter workspace property. Refs #8685.
Parallelized with OpenMP. Refs #8685.
Improved performance on speed. Refs #8685.

1. Removed log in debug level in loop.
2. Reduced access to a huge vector.
3. Refactored the operation on DateAndTime and time_duration for speed.
Cleaned up code for logging and multithread. Refs #8685.
Cleaned the codes. Refs #8685.
Fixed a compiler warning. Refs #8685.
Refactored filtering by multiple log values. Refs #8685.
Refactored algorithm to adding new splitter. Refs #8685.
Edit wiki and cleaned the codes. Refs #8685.
Suppressed a cppcheck error. Refs #8685.
Fixed a Windows compilter error. Refs #8685.