Post mode change notification when document changes busy state.

This is because busy is displayed as a mode in the status bar, so we
need to be notified when it changes.
Expose some things for Nu status view scripting.
Change the values of the status alignment constants a bit.
Extend Nu support with a transformer block in ViStatusNotificationLabel.

ViStatusNotificationLabel updates a status label based on an Objective-C
notification. The transformer block allows for a Nu block to be run to
transform the notification into a String. It is only run if it is set on
a given label.

Additionally, an instantiation function is provided,
initWithNotification:transformerBlock:, that allows a
ViStatusNotificationLabel to be created with a transformer block right
off the bat.
Make default status bar be speicified in Nu.

app/status.nu now contains the definitions for the caret and editor mode
labels. The ViAppController has a statusSetupBlock property that takes a
Nu block that is called whenever a new window loads. The block receives
as its parameter the ViStatusView for the new window, and can then set
up the status view as it pleases.

The default status view has the caret and current mode. There is a
fallback in place where if the status block is nil, the caret and editor
mode labels are hardcoded in Objective-C. This fallback should only end
up being used if the user explicitly unsets the statusSetupBlock
property, since the Nu code bundled with Vico sets a default
statusSetupBlock.
Add notification for busy mode change.

When a ViDocument needs to handle a bundle command, it needs to change
the document state to busy. This should trigger a mode change for the
status bar and other areas of the system; however, the ViDocument can't
generate the ViModeChangedNotification because it doesn't have the
ViTextView to pass as the notification object. As such, we introduce an
intermediary notification, ViDocumentBusyChangedNotification, which is
used to notify any associated ViTextViews about the change, so that they
can in turn emit the appropriate ViModeChangedNotification.
Nils from status transformers indicate no change.

The ViStatusNotificationLabels now accept the transformer block's
returning of a nil as an indication that the current value of the label
should remain unchanged. This can be used, for example, to abort
transformations for the current mode when the mode change is not
associated with the current status view.
Pass status view to notification label transformers.

Now both Nu and Objective-C transformer blocks for
ViStatusNotificationLabels and attributed labels receive the status view
associated with the label in addition to the notification object itself.
Don't show mode changes in ex TextView.

Ex commands are also entered in a TextView; we now ignore mode changes
that are triggered by those views.
Ignore mode changes triggered by other windows.

Before, all status views would reflect the mode of the current window's
ViTextView, because the notification broadcast to all status views and
they did not filter by window. Now we check that the associated text
view's window and the window of the status view the label is in are the
same before making any changes to the text.
Only update the caret label for the current window.

As with modes, we were updating the caret label for all status views
based on the current text view; we now only update for notifications
from the status view's same window.