Refactor internal handling of the waiting vs. ready state for controls

When `control.ready()` is called, two events are now called `beforeready`
which is called prior to the deferred object is resolved and `ready` which
is called after the deferred object is resolved.

The initial state of the control and binding the context occur during the
`beforeready` event to ensure other views can bind to the ready event
(or deferred object) once everything is setup.

Fix #434
Remove use of a deferred object and strictly use events
Add error event handler for showing the control error view
Merge pull request #435 from cbmi/issue-434

Refactor internal handling of the waiting vs. ready state for controls