Promoting Reflection and its Effect on Learning in a Programming Tutor