Bug 167450 [DataBinding] Get rid of bind support factory magic
I finally realized that we don't need that other magic factory. I'll move fillBindSpecDefaults() and the methods it calls (createConverter, createValidator etc) to a new class DefaultBindSpec. Clients who want default validators and converters created for them just create a DefaultBindSpec as opposed to a (rather empty) BindSpec. I will also move the early type checking into DefaultBindSpec to make it optional as well.
bundles/org.eclipse.core.databinding/src/org/eclipse/core/databinding/Binding.java
public void addBindingEventListener(IBindingListener listener) {
		synchronized (bindingEventListeners) {
			bindingEventListeners.add(listener);
		}
	}
	/**
	 * Fires the given event to the binding event listeners, exiting early when
	 * one of the listeners flags a validation error. If no listener flags a
	 * validation error, the data binding context's binding listeners will be
	 * notified in the same manner.
	 * 
	 * @param event
	 * @return the validation error, or null
	 */
	protected IStatus fireBindingEvent(BindingEvent event) {
		IStatus result = Status.OK_STATUS;
		IBindingListener[] listeners;
		synchronized (bindingEventListeners) {
			listeners = (IBindingListener[]) bindingEventListeners
					.toArray(new IBindingListener[bindingEventListeners.size()]);
		}
		for (int i = 0; i < listeners.length; i++) {
			IBindingListener listener = listeners[i];
			result = listener.bindingEvent(event);
			if (!result.isOK())
				break;
		}
		if (result.isOK())
			result = context.fireBindingEvent(event);
		return result;