fix #1019 MultiAutoComplete data model update and onchange listener

This commit fixes an issue with the onchange handler not being
called properly when removing options with the close button.
It makes sure the data model is updated properly, and the onchange
listener is called, and called only once when there is a change
in the widget value.

Before this commit, the checkValue method on widget controllers
was called in 2 different cases (for widgets with a drop down popup):
- when a new value comes from the data model bound to the widget
- when a value is selected in the drop down popup.

For the MultiAutoComplete, those two use cases have to be handled
differently, especially because the type of the value is different
(an array of objects in the first case and a single object in the
second case). So, this commit introduces a new method, called
checkDropdownValue, which is now called instead of checkValue in
the second case. This simplifies the code and makes it easier to read.

This commit also moves some code from the widget to the controller to
make the code of the MultiAutoComplete more consistent with other
widgets.

Also, this commit fixes some other issues linked to the "expando"
mode (now the popup stays open to allow checking and unchecking several
options).

Close #987
doc Callback in `Json.addListener` can't be a function

Since it's very untypical, it should be emphasised.

Also, documented when `responseJSON` is available.

Close #1010.
Close #1012.
feat #999 - Added new asserts methods

assertNull, assertNotNull, assertUndefined, assertNotUndefined, assertTruthy, assertFalsy

Close #1004.
fix #1020 Adding properties to the atflatskin for the MAC

Adding the properties in order to display the MultiAutoComplete widget with the atflatskin.
fix - old opacity value is stored in fullValue property
feat #1017 MultiAutoComplete navigation

It is now possible to use the left and right arrow keys to navigate throughout the whole widget, including currently inserted options. It is also possible to use the tab key to jump form the inserted options list to the text input field, and then from this field to the next focusable element in the page (outside the widget).

Close #1017
fix #546 Update sourceURL syntax in evaled files

Use `#sourceURL` in modern browsers and `@sourceURL` in Firefox <=22.

Close #1023.
fix #1030 MultiAutoComplete wrong behavior when editing without changing entry.
1.4.17
feat #1031 Removal of TemplateCtxt.getDomId method

Method `getDomId` of class `aria.templates.TemplateCtxt`, deprecated in version 1.4.12 (200f52d1031c9411601214675df8bab8697b8f98) has now been removed.
fix #1033 Removing wrong lines in the MultiAutoComplete.

This commit removes two lines which set a new value in
the data model when pressing tab if the field is empty
and not positioned at the end of the options (i.e. when
leaving the edit mode through tab if the field is empty).

There is no reason to set the value at that time as the
value has not changed, and this can lead to the onchange
handler being called later when the value has not changed.