Made test cases based on __COUNTER__ where available instead of __LINE__

This solves a big problem for me where my existing Boost.Test based unit testing places one test per file and #includes all of them via a build step into the one test binary, and as a result __LINE__ collides repeatedly. This pull request uses __COUNTER__ to generate the unique test case names instead on those compilers which have it, else it falls back to __LINE.