adds custom attributes

A first implementation of custom attributes. 
To demo it, gestures have been made fully independent and optional module.

Before adding documentation and sample, a review is needed please.
If `refreshAttributes` is called several times (it is called each time an attributes changes), the same handler will be present several times in `this._customAttributesHandlers` and the `cleanHandlers` method will be called several times for the same node and same handler in `$dispose`...