Refactored DialogueManager, Created Dialogue class

The dialogue class allows you to create timed dialogue between multiple characters.
The dialogue manager now manages the triggers used to determine which dialogue is played.
Added publicly accessible triggers

For example, when a tower is destroyed, it can call
DialogueManager.TriggerDialogue(DialogueTrigger.TowerDestroyed) and the
dialogue associated with that trigger will start playing.
Added ability to create dialogue from a file

See src/dialogue_1.txt for examples. Make sure the triggers and values
used are mapped to an enum value in DialogueManager.