Significant changes to client-side change tracking and server-related JavaScript APIs, etc...

Notable Changes
===============
* The client-side change log now tracks all changes, not just changes to server-origin types and properties. The client-only changes are filtered out when requests are sent to the server.
* When the user interacts with a bound field or an adapter in some way this change and the resulting property changes from rules and events are automatically batched together and given a somewhat useful name to describe them. Application code can also batch changes using the method context.server.batchChanges.
* LazyLoader is now internal to the framework. Calls to LazyLoader.load, LazyLoader.eval, and LazyLoader.evalAll should be replaced with context.server.ensureLoaded. Also, rather than calling LazyLoader.isLoaded, application code can now call obj.meta.isLoaded() with an optional property name as the only argument.
* Changes to the timing of when conext.server's request events fire and the event argument objects' properties that are passed to the event handlers.
 - Method-specific begin events are raised first (i.e. raiseServerEventBegin).
 - The general requestBegin event is raised after request information has been "serialized" into the wire format, and immediately before actually sending the request.
 - The general requestEnd event is raised immediately after the request completes, whether successful or not.
 - The general requestSuccess event is raised immediately after the response data has been processed.
 - The method-specific end and success events are raised after any additional response processing is performed which may be necessary in order to assign method-specific property values to the event arguments object (for example, the server event object sent in the response).
* Moved some likely unused functions of context.server to a compat script.
* Add window unload detection in ExoWeb core (ExoWeb.windowIsUnloading).