Implement a Singly Linked List Data Structure with methods to add nodes at specific points.
- Add (O(1)) input: Node. Adds to beginning of list
- Print (O(n)) output: Console lines
- Append(O(n)) input: Node. Adds to the end of the list
- AddBefore(O(n)) input: node to add, target node. Adds a new node before a specific node
- AddAfter(O(n)) input: node to add, target node. Adds a new node after a specific node