Allow strings to match against error objects in has_error()

This solves the use case of matching against complex, unpredictable error objects. It's a common idiom in Lua to throw error objects that implement the __tostring metamethod. In many cases it will be more convenient to match against these errors using strings. First, it has the advantage of hiding how the error object is implemented. And second, it's the only way to match against error objects that contain unpredictable data (which is common when you decorate your errors with context/system-specific data)

This only affects error objects (tables) that implement the __tostring metamethod.
Added tests checking table formatting
Refactored table formatting

This fixes a number of problems with the old implementation, which
used gsub on result to fix up formatting.
Fix argument count in has_error()

The argument count was not being set in has_error(), causing an error to
be thrown in 'say'.

The following assertion check:

	assert.has_error(function() end)

would throw an error with the following message and stack trace:

	say/init.lua:46: bad argument #2 to 'format' (no value)

	stack traceback:
		say/init.lua:46: in function 's'
		luassert/assert.lua:60: in function 'error'

This error occurs because arguments.n is never set in has_error().
Fix error message when no error is caught

When has_error() fails, the error message is misleading, implying that
an error was thrown, but did not match what was expected, yet 'Caught'
and 'Expected' both match each other.

The following failure:

	assert.has_error(function() end)

produces the following error message:

	Expected a different error.
	Caught:
	(nil)
	Expected:
	(nil)

Update the error message to more accurately describe the error, showing:

	Expected a different error.
	Caught:
	(no error)
	Expected:
	(error)

This way, it is a bit clearer that no error was thrown/caught, while an
error was expected. If an expected error message is provided, that error
message will be displayed instead of '(error)'. If the function being
tested calls error(), with no arguments, the caught message will display
'(nil)' instead of '(no error)', since 'nil' is a valid error object.
Merge pull request #68 from o-lim/master

Convert error object to string in output_spec
Merge pull request #71 from mpeterv/improve-table-formatting

Improve table formatting
Merge pull request #72 from o-lim/fix-has-error

Fix error message for has_error()
Merge pull request #67 from tbastos/master

Allow strings to match against error objects in has_error()