Change NPLinkedList comparison to use isEqual

NPLinkedList used to rely on pointer equality (eg. ==) to check whether
an object was contained in it.  It's now changed to call isEqual
instead, which is more akin to how the containsObject from NSArray
works.

What this means is that when checking whether an object is contained in
a linked list, it will call isEqual on the objects to determine this.
So it will check the value and not the pointer itself.
Add nil guard to NPLinkedList map function

Added a guard to the map function to check if the supplied block is nil.
If it is, nil is returned.  It doesn't make sense to return a new linked
list if the block is missing.
Add spec for NPLinkedList map function

Added specs to test the map function of NPLinkedList.