modify forEach method to use fn.call()
refactor clear() to call removeFirst()

The clear method was calling remove() to clear each node from the
list; however, the remove() method removes the tail node from the
list which requires it to iterate over the entire list each time to
get to the second to last node.  Changing the clear method to call
removeFirst() improves the performance of that method.  removeFirst()
is a O(1) operation whereas remove() is a O(n) operation.
reformat existing jsdoc comments
add comments/documentation to source