components: Move into separate files

Neccesary both to support external component/component libraries,
and configurable build-sets, needed for fitting on small devices.
Refs #16 and refs #3