Components + Lifecycle callbacks

This is a combined verrsion of #280  and #281 

This branch also introduces a much better support for manually starting and stopping Components.