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.
Bug in the list binding when a list changes

This would hit cases where you for instance delay-initialized a
itemDataSource or changed the array that an itemDataSource was bound to.
Merge pull request #21 from spankyj/master

Fixed issue #17