GrahamA/Mehul: add an AsyncComponent class that can handle wrapping a normal component, but retrieve and store the result on a different thread.