fix #1083 tooltip issue when there are quotes in the string
feat set/removeDataset methods

This commit introduces two methods to manipulate dataset attributes in HTML element:

* `aria.utils.Html.setDataset`: it allows to specify an object containing key-value pairs of dataset attributes. It uses the keys to add the right attribute, and the values to assign the correct values to them.
* `aria.utils.Html.removeDataset`: it allows to specify an object whose keys will be used to remove dataset attributes.

This feature is compatible with the implementation of `aria.utils.Html.buildAttributeList`, which does not convert camelcase attributes to their dashed counterpart. However, this lack of processing is deprecated (#499). Backward compatible code will have to be removed also from the code added by this commit.
fix #1063 section attributes binding improvement

This commit introduces the following fixes:
- when section attributes are bound to the data model, changes in `dataset` and `classList` are now taken into account
- the binding can now be recursive or non-recursive
- when the className of the section container is changed via the section wrapper classList, the data model is correctly updated.

It also removes method `aria.templates.SectionWrapper.setClassName` which has been removed from class `aria.templates.DomElementWrapper`, so thet it did not actually work.

Close #1081
fix #1085 checkbox init in MAC dropdown

checkboxes related to selected options are not ticked when the widget is initialised.
fix #1085 checkbox init in MAC dropdown

checkboxes related to selected options are not ticked when the widget is initialised.
fix #1082 'Tab' doesn't behave as 'enter' when defined as a selection key
feat #1086 Deprecation of cssClass in sections and repeaters

`cssClass` property in section and repeater configuration is now deprecated. It has to be replaced by `attributes.classList`.

In the specific case of the `childSections` configuration for the repeater, the `cssClass` could be a function like any other property, with the peculiarity that the function was called every time a change occurred in the bound map/array. This allowed to implement pyjama tables.
With this commit, this feature is replaced and enhanced: if the `attributes` property in the `childSections` configuration is a function, it is called every time there is a data change and its returned value is used to update the section attributes of each entry.

Close #1086
fix #1092 improve deprecation of IO.useXHRHeader

Don't log warnings after the user migrated to the new syntax
fix #1087 HTML Select Widget updation of datamodel on change
fix #968 - focus not correctly assigned for IE

focus not correctly assigned for IE when switching MultiSelect and unnecessary blur/focus events are triggered
feat #1008 Json.keys similar to Object.keys

aria.utils.Json.keys(Object) method behaves like aria.utils.Object.keys(Object) except that it additionally filters out metadata keys in the container.

closes #1008
Exposing module services in a Page Engine based application
fix #1094 non-delegated events are now correctly raised on html widgets

Especially, the onchange event on the html select widget is now correctly
raised on IE 7-10, which fixes test.aria.html.select.onchange.DataModelOnChangeTestCase.
fix #1095 test.aria.widgets.form.autocomplete.samevalue.AutoComplete

test.aria.widgets.form.autocomplete.samevalue.AutoComplete started failing with
commit 1d02f12b58f5d4f84773f2d3605fa544eb096e93.
However, doing the test scenario manually or with the robot works fine.
As a consequence, this pull request changes the test to use the robot instead of Syn.
(Syn puts the cursor at a wrong position when simulating a click on the field).
1.5.2
refactor Remove PrintTestCase

It's been long orphaned (not referenced in any suite), apart from that
it's a UI test which we want to get rid of.

Close #1093.
feat #1106 Include built AT version in npm package

As discussed in #548, it seems that it can be useful to serve minified
version of AT in our npm package along with the src as we're doing now.

This commit effectively adds the contents of `build/target/production`
folder to the npm-published package, and makes the build run automatically
before actually publishing AT to npm via `npm publish` (or `npm pack`).

This increases our npm package's size from ~1.0 MB to ~1.5 MB.
For simplicity, skin files copied at built time to the target folder
are also included in the package (tradeoff simplicity for package size)i.

For applications depending on ariatemplates in their package.json,
they can expose `node_modules/ariatemplates/build/target/production/` as
one of the root folders of their webserver, and they can then include
minified AT in the page via

```
  <script src="/aria/ariatemplates-1.x.x.js"></script>
  <script src="/aria/css/atskin-1.x.x.js"></script>
```

Due to the fact that `npm install` runs also the `prepublish` script,
things were split between `prepublish` and `ci` scripts (the latter being
invoked instead of `npm test` on Travis) in order not to run Grunt/JSHint
twice on Travis.

Close #1106.
feat #1084 Add a simple way to run one test

This commit imports our `beta.html` test page into opensource world.

This is to make it easy to continuously run just a single test for
debugging purposes, without
- the need to configure Attester
- being forced to use the old test runner available via `npm start`

The commit largely imports our CC files untouched, with just some
adjustments to the paths included in the page.

The differences with respect to to the original `beta.html`:
- `devfiles` and `verbose` flags are true by default
- if no classpath provided, then a form is displayed asking for classpath,
  instead of running the whole suite
- page is renamed to `test.htm` though `beta.html` is there for
  compatibility

If a developer has an instance of Apache server running, with his
`localhost/aria-templates/` pointing to AT Maven build folder, they may
append the following lines (as an admin) to
`C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\httpd.conf`
and restart the Apache service in order to have equivalent
`localhost/aria-templates-git/` pointing to the root folder of this Git repo,
with compatible URL scheme for running tests:

    <Directory "G:\gh\at">
        AllowOverride None
        Options Indexes
        Order allow,deny
        Allow from all
    </Directory>

    Alias /aria-templates-git "G:\gh\at"

(where `G:\gh\at` is the path of the AT git repo on disk)

and then he may run the test navigating to

    http://localhost/aria-templates-git/test/test.htm?testClasspath=...

(`beta.html` is also there and redirects to `test.htm`).

The advantage of this solution is that the developer doesn't have to start
anything if the Apache daemon is registered as a system service, and
there's no need for setting up any file sync tool, because files are taken
directly from the Git repo and they're not cached by default by Apache on
the server side.

If a developer doesn't have Apache installed, but has Python instead, he
may create an ad-hoc server from command line (from AT root folder)
using for instance those aliases

    alias serve2='python -m SimpleHTTPServer 88' # python2
    alias serve3='python -m http.server 88'      # python3

and then navigate to

    http://localhost:88/test/test.htm?testClasspath=...

Anyway the developer has to set up some server, because dealing with XHR
requests through `file://` protocol is a mess in modern browsers.

Close #1084
refactor Deprecate some long unused jsunit classes

Close #1104
fix #1100 add getServices in PageEngine interface

The `getServices` method is now available in the interface that is used to wrap the instance of page engine available in the initArgs of module controllers declared in the site configuration and in page definitions.

Close #1101.