Hi,
Em.... No no.... Don't mess up with the Task classes. You only have to implement the Agent/Learning interface, depending on which track you want to compete in. For instance, if you want to compete in the Learning Track your class should implement the Learning Agent interface and write the code you want for the unimplemented methods (including giveIntermediateReward). Otherwise, if you aim for the GamePlay track you should implement the Agent interface.
Have a look in the "competition" folder for more examples.
PS: The MarioAI package although is not sufficiently explained and documented, it is not that difficult to understand how the interaction between the classes is achieved. You just have to spend some time looking at the source code and keeping useful notes.
This procedure worked for me last year, when I implemented my learning agent using Reinforcement Learning.
Simos