Updates README to improve comments and examples
Modifies how component macros are defined

Avoids creating a new string each time a component is asked for its
name.