Revamped various parts of component system.

New abstract component system with component.implement() method added.
Conversion from component to respective functions using to****() instead of getter function.
component.makePrivate() renamed to component.fork().