Separate 'type-checking' tests

Move 'type checking' tests out from 'coercion' test cases into their own
test cases. I am planning to separate out the type checking and type
coercing methods; they need to be tested separately as well.

For now, all tests pass except the tests for custom type-checking
functions.
Refactor 'coercion' tests

Add tests to confirm that type checking raises an error for invalid
typed values.

Move 'AnyType' type-checking test from 'coercion' tests to 'type
checking' tests.

Refactor 'coercion' tests. Refactor tests for situations where 'default
coercion functions fail'. Going forward, coercion functions will never
raise errors. Remove all tests that check for errors raised by coercion
functions. For the cases where coercion functions were also handling
type checking, I've moved those tests to the 'type checking' tests.
Refactor errors

Rename 'IOProcessFailureError' to 'InvalidIOValuesError' everywhere.

Remove 'CoercionFailureError' and 'CoercionSuccessError'. Coercion
functions are now expected to never raise an error.

Refactor default coercion functions. Remove all 'Coercion...' errors.
'coerce', 'verify' in tests

Replace 'IOProcessor' 'process' method with 'verify' and 'coerce'
methods in all tests.

I am breaking the 'process' method apart into two separate methods. This
way the user can access the 'verify' and 'coerce' behaviors
independently. This allows the user to call the two component methods in
whichever order; convenience methods 'process_input' and
'process_output' will add consistency.
Implement 'verify', 'coerce' methods

Break 'IOProcessor.process' method into 'verify', 'coerce' methods.

Remove coercion tests that use the 'unlimited' predicate. 'unlimited'
does not apply to coercion.

Rename 'InvalidIOValuesError' to 'VerificationFailureError' everywhere.

Rename 'NotSet' to 'NotProvided'.
Minimal 'verify_type'

Implement minimal 'verify_type' method that relies upon the old 'coerce'
methods.
'verify_dict'

Implement 'verify_dict' method. This replaces the type-checking
procedure from 'coerce_dict'.
'verify_list'

Implement 'verify_list' method.
'WrongTypeError

Rename the 'CoercionFailureResult...' errors to 'WrongType...' errors.
Refactor - methods, tests

Refactor 'coercion' methods. Remove all type-checking logic from these
methods.

Rename 'difference_item' to 'difference_ioval, for consistency with
other identifiers.

Refactor 'difference_ioval'. Code is more clear and direct now.

Change 'difference...' functions into 'IOProcessor' class methods.

Rename 'verify_...' methods to 'confirm_type...' to avoid confusion with
the main 'verify' method.

Rename 'ProcessTest' to 'VerificationTest'.

Rename 'Structured...Test' tests to 'StructuredDict...Test'.

Cleanup.
'typecheck_functions'

Add 'typecheck_functions' parameter to 'IOProcessor.__init__' method.

Implement custom type-checking functions.

Remove 'TestTypeCheckingDefaultFunctions' test case. I've decided that
there should be no default typecheck functions; the cases described by
the 'default' typecheck functions were not common enough.

All tests pass.
'IOManager' tests

Add tests for 'IOManager' class.
'IOManager'

Custom typecheck functions now must accept two arguments: 'value' and
'expected_type'.

Implement 'IOManager' class.

Add 'IOManager' to package-level namespace imports.

Debug tests.

All tests pass.
Refactor - identifiers

Replace 'tspec' with 'iospec' everywhere.

Add 'TypeCheckFailureError', 'TypeCheckSuccessError' to package-level
namespace imports.

Add 'default_iomanager' function.

Rename 'input_processor' and 'output_processor' functions to
'default_input_processor' and 'default_output_processor'.
Merge branch 'dev/iomanager' into develop