Added ability to perform subsequent scans

Supported this by removing old table entries and reseting the arrays
Moved common element ref. to beginning of module
Renamed some element ids and their reference vars

Renamed them to make more human readable and to differentiate between
the name of the element and the element's tag name
Attempted to use existing list method

Attempted to make table sortable by creating a new list object after the
table has been created. While clicking on the name heading worked, the
table entries were removed from the DOM instead of being sorted.

Added the class "name" to the link element instead of the name cell
since it is the link which contains the actual text to sort.

To get the name heading to act as a button, it was necessary to add the
list.js attributes first, followed by the "titled-column" class.

The problem is that it is difficult to determine at which point in the
code the table is created since most functions operate asynchronously.
First attempted to call the createNewList() at the end of
traverseTree(). This didn't work because traverseTree() returns multiple
times for each removed bookmark, not at the end of the entire tree
traversal. Then tried calling createNewList() at the end of the callback
function of the chrome.bookmarks.getTree() method, but this didn't work
either because createNewList() is called before the video responses
arrive. Perhaps this is the correct point at which the tree traversal is
completed, it's just that the table isn't created yet because the table
entries are added in asynchronous functions. (i.e. the rows aren't created
until the responses arrive)
Added object-oriented pattern to requesting videos

Made sendRequest() a method of the object MatchedBookmark. The new
objects are created in scanNode(), then their sendRequest() methods are
called after the tree traversal in getBookmarks().

Attempted to define the methods sendRequest() and addToTable() by
binding them to the MatchedBookmark prototype, but there were issues
trying to call addToTable() from within sendRequest(). Hence, the
methods were defined from within the constructor function and the value
of "this" was saved to "self" which was then used to refer to the object
from within sendRequest().

Even though the object-oriented design is more elegant than the function
centered design, it still does not fix the problem of attempting to
create the List object before the table is completed.
Added sorting the table by the bookmark's name

Made the sorting functionality work by creating a new List object after
every table entry is added

Removed the createNewList() function and added its instructions to the
addToTable() method since it is was only called from addToTable() and
provided minimal functionality

While the sorting is working, it is only possible to sort the names of
the bookmarks in descending order. Once the name heading is clicked, its
"sort" class is changed to "sort desc". As a result, the user is not
able to switch between ascending and descending order.
Fixed sorting not reversing

Since the List object was being created after every addition to the
table, multiple event listeners were binded to the column heading which
were conflicting with each other.

The solution is to create the List object once the table has been
completed. This results in only one event listener for the column
heading. Now sorting the name column works as expected. That is, once
the column is sorted by name in ascending order, the next click on the
heading sorts the column in descending order, and so on.
Grouped class values under one attribute
Added sorting to the folder and date columns