Use String.format instead of concatenating when establishing database connection

It is better to use formatted String instead of plain concatenation. There is
also a minor change in the database name, since what's actually generated is
not a file but is a directory.
Create table within the constructor if none is found in the database

The purpose of the Database class is to do operations on one certain table.
Because of that, it makes more sense to create that table within
the constructor if it doesn't exist. Thus, the column names and data types are necessary when
instantiating.
Select only ID from the preferences table when checking if ID exists

Using * when selecting is not efficient. Moreover, there is no need for all
the columns since the purpose is to check whether or not the ID exists in the
table.
Change ambiguous naming for the set of column names and values
Query database and update current preferences
Adds a new set of preferences for a certain username
Add getters for instance variables

The order of the instance variables also had a minor change according to the
relavance.
Add test for Preferences class
Update UML diagram according to the source code