Add allNodes private method to NPLinkedList

Added an allNodes private method to NPLinkedList.  It's similar to
allObjects but it returns NPLinkedListNode objects instead of the
underlying objects.
Add disconnect method to NPLinkedListNode

Added a disconnect convenience method to NPLinkedListNode.

Disconnect will remove next and prev pointers from the node and also
attempt to remove the corresponding pointers from the connected objects.
Add cleanup in removeAllObjects for NPLinkedList

Added some cleanup when removing all objects from an NPLinkedList.

It used to only nil-ify the head and tail.  Now it will go through all
the nodes and disconnect them to make sure there are no dangling
pointers left behind or possibility of circular references.
Change prev property to weak in NPLinkedListNode

Changed the 'prev' property to be weak in NPLinkedListNodes.  This is to
prevent circular references.  The 'next' reference is enough to keep a
handle on all our data, 'prev' is really just a convenience and
shouldn't hold a strong reference back to the object.