Represents a Goal that can be added to a GoalController.
A Goal represents an abstract node in a tree of events. It can be anything from attacking players to a villager. By
using the GoalSelector provided in shouldExecute(GoalSelector) the Goal can traverse its tree of
behaviours.