Fix and refactor NoMatchingInvocationError.toString() (#149)

* Fix NoMatchingInvocationError.toString()

`NoMatchingInvocation.toString()` attempted to avoid printing a comma
after the last argument, but the code was backwards, instead adding a
trailing comma and omitting the comma after the first argument.

* Refactor NoMatchingInvocationError.toString()

Break up `NoMatchingInvocationError.toString()` so that we can
generate human-readable string representations of `Invocation`s
elsewhere for debugging.

* Add test for `describeInvocation`, fix printing strings for named arguments
3 files changed