Handle generic type definitions that do not contain a backtick

I came across a bug when using Masstransit in which Consumes<>.Context caused an exception to be thrown by ToShortTypeName because the generic type definition did not contain a backtick (I believe Masstransit is calling ToShortTypeName on the base type). Rather than guess whether that was right or wrong, I figured it would be easiest to go on the defensive and account for generic type definitions that do not contain a backtick. I also added some basic sanity tests for ToShortTypeName, though I wasn't able to easily come up with a test case for this bug.

It would appear that though I didn't break line endings, I did inadvertently break your tabs by replacing them with spaces. If you want me to fix this let me know and I'll amend the PR.