Fix string concatenation errors

Some error paths concatenate the output of "type" with a string,
which gives TypeError: cannot concatenate 'str' and 'type' objects,
rather than describing the actual error.

Note the test is somewhat limited because the assertRaises doesn't return the exception, unlike e.g with testools.TestCase.

Closes #149