Fixed: decoding a CPClipView could result in duplicate subviews.

This bug used to be concealed by the fact that we called [superview removeObject:X] when replacing a subview, which caused all duplicates to be removed.

Without this fix, the call to setDocumentView in CPClipView's decoding would try to add the document view as a subview. But when decoding, the clip view is already in the decoded list of subviews. Normally adding a subview twice would just move it to the end of the list of subviews, but this only works for fully decoded subviews where superview is not nil. Since we're in the middle of decoding there's no guarantee superview is set yet.

This fix avoids calling addSubview:.
Crash early in debug mode if addSubview: is called with a not fully decoded view.

If a view to be added is already a subview, but doesn't yet "know it" due to being only partially decoded, a corrupted view hierarchy with duplicate views would be set up, which is very hard to debug.
Move special per class nib2cib processing to the classes themselves in `awakeFromNib`.

Having class specific code in the class makes more sense, and this will make it easier to add more class specific transformations.
Fixes #1409. Improve CPTabView decoding to fix tab selection errors.

This is an improved fix to the corrupted tab view state bug partially addressed by 0f347be.

Without either fix, NSTabView is converted to a CPTabView where tab view item views are subviews of the NSTabView, while in Cappuccino the selected view item is supposed to be a subview of a CPBox.

Without this fix, CPTabView decoding called addSubview: in initWithCoder: which can cause the superview of a view to become set, only to later be overwritten when the superview ivar is decoded.

This fix removes the tab item view as a subview from the tab view before encoding it in nib2cib, and then makes sure not to call addSubview: while still in the initWithCoder stage, but rather later in awakeFromCib.
Fixed: subclasses of CPMutableArray had broken removeObject:.

The `removeObject:` default provided in CPMutableArray would not work in subclasses because it relied on the class having a .length property.
Merge commit 'c4370240f8e31c257f038b661a2e171fe346f28b'
Make 30268f9865c compatible with Internet Explorer 8-.
Fixed: - CPMutableArray removeObjectIdenticalTo did not remove all instances, was documented incorrectly.

Contrary to what the previous documentation said, removeObjectIdenticalTo: should remove all instances of the argument from the receiver, not just the first one.
Merge branch 'master' of github.com:cappuccino/cappuccino