Add public wrappers for reflecting on types

It's sometimes convenient to query types and their constructors.
Fortunately, we already have user_type_def/1 and
user_type_constructor/2 for this internally.  Expose those predicates
publicly so that users can do the same thing.  This extra level of
indirection gives us freedom to change how types are defined internally
without breaking the public interface.

The names current_type/1 and current_type_constructor/2 are patterned
after the built-in predicate current_predicate/1.