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