Cleanup headers for builtin types

This makes header inclusion more consistent and loads less headers for
cases where they aren't needed.