/*
99 bottles of beer on the wall in an extreme template-metaprogramming style.
It uses template specialisation to decided how to print numbers, whether
'bottles' should be plural, and to finish the song correctly.
Macros are used to generate the large number of specialisations required...