Added setting so change notes can be configured to be required or not on new content. Also, refactored settings and changenoteRequired methods into utils module. changenoteRequired takes context as parameter, as some contexts are treated differently (specifically, those that are temporary).
This is not really a performance optimisation, rather, its to make it easier to figure out which are newly created objects and which are old objects that have been edited.
This hooks into the IEditAfterFieldset viewlet manager, so that the required functionality is inserted more or less where it is required, next to the cmfeditions viewlet. A method on the viewlet pulls the possible change notes from the registry. json.dumps is used to simplify this so we need not worry about weird characters in the configured change notes.