Bug 835648 - Move typed enum support to a new header.  r=Ms2ger