Organize defcomponent macro

This should be a little easier to follow and better organization
Remove bound-methods for now

/cc @scottrabin
Test that protocols satisfied with defcomponent
Implement toString in defcomponent
Whitespace fixes
Add to-attr implementation for Numbers

Numbers should just be stringified.