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

possible cases: 

- 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**).

thanks @Aokromes and @Helias for help.
change it to:
```c++
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_QUEST_TRACK);
```
same below