Bug 966575 (Part 1) -- Refactor so that Type Descriptors and Typed Datums make
use of the is<> and as<> methods, making typed object code much more typesafe.
r=sfink