Define mouseover/out handlers on whole tile instead of the bounding box

The display was previously interrupted when the mouse moved from
the bounding box rect to the circle on top.
Add TODO comments about use of CSS3 transitions for fadeIn/fadeOut
Use "total-authors" event instead of "authors" + countData()
Remove empty line
Remove unused parameter
Remove extra subscription step, not needed
Prevent duplicate rendering of SVG

The "selected-categories" used to be published twice during the
initial rendering, once on "categories" event, once on
"selected-author-check". I added tests to check whether both
values had actually changed before rerunning the rendering.
Add new module array-utils

The module contains the utility function copy() from nada project,
which I plan to use in a new utility function, joinEvents().
Move foreach(), map(), reduce() to array-utils
Move forEachProperty() and incrementProperty() to object-utils
Export hasOwnProperty() in object-utils
Move percentage() and max() to math-utils
Move bind(), alias(), always(), alwaysTrue() to function-utils
Add utility method joinEvents() in new module event-utils

The new utility helps to synthesize a compound event from
a list of source event. The compound event reflects the set
of values of all the source events; it is published only once
all the values are set and then when any of the values changes.
Simplify event subscriptions in filter-categories using joinEvents()

The guard conditions are now handled in the joinEvents() utility.