Core/Quest: implement Quest Tracker

This is a way to easily track bugged quest. The tracks will be stored in the new quest_tracker table:

- `id` -> quest id
- `character_guid` -> character guid
- `quest_take_time` -> datetime of accepting
- `quest_complete_time` -> datetime of when quest was marked as "(Completed)" [could be NULL]
- `quest_abandon_time` -> datetime of when quest has been abandoned by player [could be NULL]
- `completed_by_gm` -> if the quest has been completed by a GM this value will be 1, it will be 0 otherwise
- `core_hash` -> core hash when player accepted the quest
- `core_revision`-> core revision when player accepted the quest

scenarious: 

- both `quest_complete_time` and `quest_abandon_time` are NULL -> means player doesn't do the quest yet
- `quest_complete_time` is NULL and `quest_abandon_time` isn't NULL -> means player abandoned the quest before completing it, then the quest could be bugged
- both `quest_complete_time` and `quest_abandon_time` aren't NULL -> means player completed the quest, but he abandoned it before delivering: there could be a bug in deliver process (e.g. the NPC is missing)
- `quest_complete_time` isn't NULL and `quest_abandon_time` is NULL -> means player succesfully finished the quest. No bug here, unless a GM completed that quest for him (in that case, completed_by_gm is set to 1).