Fix a few things with user types and make it all nicer.

- Constructors and typenames for managed user types are now separate
  things.
- Types/namespaces and functions/constructors are now separate
  namespaces, so that a user type can still share a name with its
  constructor.