Rewriting using sqlite3 and new attribute structure

Using sqlite3 instead of csv for database
Storing previous and current list attributes as dictionary. Previously
duplicated code using the same attributes of previous and current lists
now can be written as iterating over LISTS.values() and calling the
appropriate value keys:value pairs.
Backs up database.db on start, connects, and creates tables if they
don't exist.
Removed a ton of duplicate code for creation of the list controls and
column panels.