Various change log fixes/cleanup.

* Don't include a prior non-active change set as the previous active set when raising the change set started event. In some cases, the prior set was never active, and it at least was not the 'previous active set'. One example of this is server-origin changes that were simply applied and stored but were never active. [ChangeLog.js]
* Compress the last change set in the change log prior to applying changes. This eliminates an empty change set if the current active set is empty. [ServerSync.js, ChangeLog.js]
* Fix problem where an active change set could possibly never be included in the change set started event as the 'previous active set', even though it was active, because applyChanges did not raise the event manually. Now the change set started event is raised when the new change set is manually created, and if there was an active set then it will be included as the previous active set. [ServerSync.js]
* Pass the response description as the change set title to applyChanges if available. [ServerSync.js, ResponseHandler.js]
* Use response description as a part of the 'responseHandlerInitExisting' change set name if available. Also, call change log batchChanges directly in order to remove the set if it is empty. ServerSync batch changes is a higher-level method intended to be used outside of the framework and it does not provide the ability to discard empty change sets. [ResponseHandler.js]