Refactor ItemCategory to Tag
DB migration to drop table ItemCategory and add table Tag

We don't need to create table ItemCategory in db version 1 for new
users, as it will be created as Tag table in migration 4. For users who
already have the table ItemCategory, the table is empty so it is safe to
drop it. From migration 4, we will start using table Tag
Refactor XXXDBAdapter to XXXDBManager
Update db version to 4
Create DBManager as the base class and move the common code from subclass to it
Create ItemTag table as a mapping table between Item and Tag

We still need to create the Tag and ItemTag table on
DBAdapter.onCreate(), becuase when there is no db at all (The app is
installed the first time), only onCreate is called and db migrations
will not be run.

db migration only runs when there is an existing db and its version is
less than the version defined in the running app
Remove duplicated code in subclass of DBManager
Rename ItemCategory to Tag in function names