added 'defcomponent' macro.
added 'defcomponent' to API facade.
added tests for 'defcomponent'.