Updated to latest build of Moq
Closes #247
Reverted decrement

After benchmarking it makes practically no difference but is harder to
read so go back to increment
Reduced memory overhead of SqlQuery

Removed the backing list and just using the array we are passed instead.
The use of the list meant that we ended up with a duplicate of the array
passed in every time which is unnecessary memory allocation.
Replace List .ToArray() with array

using a List and then calling .ToArray() results in a second array being
created which is unnecessary memory allocation. We can avoid this as we
already know the number of items in the destination array.
Don't bother with the Hashset if no matches

If there are no matches, we can simply return an empty string array.
Also removed the linq query, removed the cast requirement and the
delegate creation for the x => x.Value
Use indexer instead of linq
Using static char[] for string.Split

Avoids the "hidden" char[] creation for every method as the method
signature is "params char"