Feature/negative tests

Add type_isnt and type_doesnt to test that a type correctly rejects a value.  See rt.cpan.org 82352.

Also did some refactoring of the type_* functions to reduce redundant code.