Added TypeEnum to std.variant

Introduces a new type, TypeEnum which stores just the tag part of an algebraic type.

http://d.puremagic.com/issues/show_bug.cgi?id=10127