final edits for linklist assignments

Elizabeth and I made improvements on the code: 
* adding self __str__ method instead of defining a print method.
* Calculating the size at constant time instead of O(n) time
* Added optional next parameter to Node class 
* Empty link list checks on insert and pop methods
For these two conditions, it's usually a better formulation to test if self.head.next is None, rather than ==.