addFirst(value) {
    const newNode = new this.ListNode(value);

    newNode.next = this.first;

    if (this.first) { // check if first node exists (list not empty)
      this.first.previous = newNode; // <1>
    } else { // if list is empty, first & last will point to newNode.
      this.last = newNode;
    }

    this.first = newNode; // update head
    this.size += 1;

    return newNode;
  }
Adds element to the begining of the list. Similar to Array.unshift
Runtime: O(1)
@param {Node} value