Invalid Operation when entry assembly not known

The use of ArgException when the entry assembly is not known
during use was less than ideal. An InvalidOperationException points out
the true problem.
Throw UnexpectedArgumentException instead of ArgException

A finer grained exception for clients to process individually. Also renamed
the test to provide a little bit more info on what is being tested.
Throw DuplicateArgException instead of ArgException

A finer grained exception for clients to process individually. Also renamed
the test to provide a little bit more info on what is being tested.
Throw MissingArgException instead of ArgException

A finer grained exception for clients to process individually. Also renamed
the test to provide a little bit more info on what is being tested.
Throw UnknownActionArgException instead of ArgException

A finer grained exception for clients to process individually.
Throw MissingArgException instead of ArgException

A finer grained exception for clients to process individually.
Throw QueryInvalidArgException instead of ArgException
Throw FormatException for invalid date time values
Throw ValidationArgException in the ArgValidators

Some tests were testing two things, exception and
correct values for validators. I split those out to their
individual tests.
Throw ValidationArgException in the enum ArgReviver
Clean up exceptions XDocs
Merge pull request #19 from davidroberts63/Exceptions-Hierarchy

Exceptions hierarchy