everyone likes typename except MSVC

Apparently MSVC doesn't want typename where it makes sense to use
typename (dependent type from a template).  Preprocessor verbosely
saves the day, yet again.  Relates #68