Fixed: CPArray did not allow binding to @count.

Previously, CPArray did not allow binding to the collection operator @count. In Cocoa this is allowed.

This commit allow the key path @count to be observed, so that @count can be bound to.

Formatting fixes as well.
Fixed: Infinite loop when a first responder has a nil superview

This bug appears only if a table view have been added to the window.

CPTableView observes first responder changes and moves up in the view
hierarchy to determine the edited data view. If for some reason, a
superview in the hierarchy was nil, we entered an infinite loop.

This commit adds guards to the recursive method that searches the data
view. Also added an early return when the fr changes to a view outside
the table.

Fixes #1875
Merge remote-tracking branch 'upstream/master' into CPTableView-viewForRow-infinite-loop
The FR can be a window, don't check if it's inside a table.
Merge pull request #1876 from cacaodev/CPTableView-viewForRow-infinite-loop

Fixed: a view outside a CPTableView causing an infinite loop when becomes FR.
Fixed: Typo in CPImageView Category

The category name for CPImage (CachedImage) was spelled wrong. This commit fixes the typo.
Fixed: A dragged view was constrained inside a plaform window bounds.

For example, in CPTableView before this change, dragged rows could not move up if the table view was near the top of the platform window.

Fixes #1877
Test TableTest/ViewBasedCib/ and drag up the third row.
Merge pull request #1878 from ahankinson/fix-cpimage

Fixed: Typo in CPImageView Category
Merge pull request #1879 from cacaodev/CPDragServer-fixed-constrained-inside-bounds

Fixed: A dragged view was constrained inside a plaform window bounds.
Fixed: instantiating a cib with no owner would generate nil warning

Previously, when a view-based table:

- Had no delegate.
- Used bindings for its data source, thus obviating the need for makeViewWithIdentifier:owner:.

it would eventually call CPCib -instantiateCibWithOwner:topLevelObjects: with a nil owner (the nil table delegate). This method would try to construct a dictionary with the nil owner, which would generate a deprecation warning, and will in the future fail altogether.

In Cocoa, this is exactly what happens, the owner is nil. And the documentation for -instantiateNibWithOwner:topLevelObjects: clearly states that the owner may be nil.

This commit only adds the owner to the name table dictionary if the owner is non-nil. Since objectForKey: with a non-existent key returns nil, this is the same as storing nil for that key.
Fixed: adding object to CPArrayController generated warning.

Previously, if properties were bound to table columns in a cell-based table, and an object was added/inserted using CPArrayController, a warning was generated about a missing observer.

This commit is a temporary fix, the real fix is to implement more granular notifications during didChangeValueForKey:, which will eliminate the source of this problem.

Fixes #1781.
Formatting
Fixed: removed deprecated check for no resource path.

Long ago it was required to use the -R option with nib2cib if custom images were used. nib2cib now infers the resource path, so there will always be at least a default resource path. Thus the check for no resource path was unnecessary.

This commit removes that check.
Fixed: shared singleton Converter was being overwritten by incompletely constructed instance.

Previously, NSNib would create a Converter instance for converting table cell views. Unfortunately Converter did not expect to be instantiated more than once, and the singleton SharedConverter was unconditionally being set in the initializer. This might not have caused problems, except that NSNib did not copy all of the shared Converter's state to the copy, especially the resource path, which caused custom images in table cell views to fail.

This commit correctly ensures that the shared Converter instance is set only once, and also copies all of the shared Converter state to the instance that is used for converting the table cell view.