Component API cleanups

This collection of changes works to simplify each of the component header files to restrict the definitions to the portions of API used by other components.  It also stops including implementation-specific header files from "public" API headers.

Note: This is all ontop of my previous -Wall related cleanup PR.