Re-designed Linked List with Debugging statements

Completed the re-design of how the linked list works. This push includes
ALL of the debugging statements I've used, which is quite a number. It's
probably overboard, but I wanted to look at the EXACT memory addresses
to make sure everything was assigned properly.

The problem that kept cropping up (this has been a pattern) is I assume
things are being passed by reference, again. The final piece that put
all of this together was in my helper function in EdgeLinkedList, that's
just a convenient way to "convert" an Edge into an EdgeCell. The problem
was that no matter the (distinct) Edges I put into the function, it
would return an EdgeCell with the same memory address. Then, when I
would try to put that EdgeCell into the list, things would get bonkers
because I just kept moving the same cell around all these lists.

I fixed it by having the function return an EdgeCell memory address, and
making SURE I was making a new EdgeCell every time I called this
function using "EdgeCell *newCell = new EdgeCell;". The memory address
(newCell) is what the function would return. This solve the issue.

Basically, everything in EdgeLinkedList and List is pointers. I'm not a
huge fan, but now the good thing is I don't have to work with pointers
when initializing Nodes/Paths themselves, it will all be taken care of
behind the scenes. So even though it's all stupidly (and probably
unnecessarily complex), it's abstracted to the level I want right now.

The next step is to get rid of some of the unnecessary functions I don't
think I need (getHead/TailCell in EdgeLinkedList), and all of the
debugging statements. I'll push the tidied up version as well, but I
want everything I have here on record.