changed Trail to draw to an internal surface when adding a point, and blit to the game surface in draw().

Also some minor refactoring and fixes