Add support for promoted type literals

Test passes but I'm not sure that I've found all relevant pattern matches on new constructors.