Added new exception base class and additional exception classes for distinguishing between several different types of failed precondition situations.