feat #329 Remove unnecessary code during Grunt build: part1

This commits brings a general-usage function to do recursive replacements
in the AST given the replacements conditions, and adds two sample visitors
that remove [$]descriptions from the beans and event definitions.

The visitors are also capable to compute the number of bytes saved in the
process (the number is displayed at the end of the build by a newly
created Grunt task).
fix #315 improved test case

This improves the test case pushed in
5dc63fd637810862291ce5e31a6688dac4556487. Under some circumstances, the
old test may fail.
feat #327 improve error messages in assertEquals/NotEquals/JsonEquals

1. Allow usage of %1 %2 in assertEquals messages

%1 and %2 are shortcuts for value1 and value2 params passed to
%assertEquals and can be used as placeholders in the error message.

This commit implements the feature (Assert.js) and changes some of the
unit tests to use the new capability.

2. Fix the obvious issue with the error message of
'assertNotEquals'.

3. Write serialized versions of JSON entities in assertJsonEquals
in case there's no default error message passed.

Close #327. Close #328.
doc Update build info after changing commands in package.json
feat #342 $description no longer mandatory in bean definitions
feat #339 PhantomJS Robot implementation

Close #339.
feat #335 configurable number of PhantomJS instances in Attester

Makes it possible to increase (locally, per-user) no. of PhantomJS
instances in Attester to parallelize the execution of the test suite
when launched via 'npm run-script attester' (and 'npm test').

Type in the console e.g.
 npm config set ariatemplates:phantomjsInstances 4
to change the default to 4.

Set it to ~= your processor's noOfCores * noOfThreads * 2
for max performance. E.g. on quad-core dual-threaded processor,
set it to 4*2*2 = 16.

Keep in mind that each thread consumes ~= 30-50 MB of RAM.

This commit requires attester 1.0.2.

Close #335. Close #337.
feat #80 bindable width and height for containers

Adds possibility to bind width and height for some of container-based
widgets (Div, Dialog, Fieldset, TabPanel). The bound size is a subject to
min/max size constraints for all of those widgets.

This commit lifts the requirement for widgets to have width/height = -1
for min/max width/height to work. So this is backward-incompatible change
in some way, but the behavior of width & maxwidth etc. when provided
together was undefined earlier, so it should not have relied upon by anyone.

Apart from the bindable width/height tests, this commit brings also
a test case on static height constraints of the Dialog widget and their
behavior when the contents od the Dialog change due to a refresh.

Close #80. Close #347.
feat #292 Mobile Device Properties
feat #344 Duplicated or misplaced error strings
feat #276 custom image for Iconbutton
fix #274 Refresh section attributes

Close #354.
feat #352 Orientation change detection functionality for mobile devices added to AT
feat #348 Animation/Transition Event callbacks
fix #348 animation event in non-browser

Make sure that Delegate can be loaded even in non-browser environments like Rhino or nodejs where window/document are not defined
feat #349 maximizable dialog

Dialog can be now maximizable. If configured so, it will have a button to
maximize/unmaximize next to the close button. It also reacts to the change
of the data model property "maximized". That property takes precedence
over center, xpos, ypos, width, height changes.

When maximized, Dialog occupies the whole viewport and is not
movable/resizable. After unmaximizing, it returns to the original
position, size and other capabilities.

Close #349. Close #358.
fix #349 maxwidth/maxheight issues in Dialog

After delivering #349 via commit 29331b13d5724498ca8bb8a8566564499ed0bf36
a regresion was found during release testing: maxwidth/maxheight
constraints of the Dialog were calculated too big due to addition of the
shadow. That addition should be done only in maximized mode.

Moreover, the Dialog was not correctly resized in maximized mode when
it had maxWidth/maxHeight set. Now that properties are ignored in
maximized mode.

Close #359.
fix #276 icon button test case
1.3.5
fix #355 button widget not focusable

In IE8+ the Button widget is not focusable because of the onfocusin method
used as an hack in <IE8
Closes #357