Fixes to make more resilient to ordering issues

getControl() can return null during options object creation before the
control has been instantiated.
also, there can be ordering issues on apply for many event listeners
because they will frequently fire synchronously in reaction to changes
during a digest cycle, so they need to do the apply trick.