Add override keyword where appropriate

This mostly makes refactoring virtual methods easier/safer.