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.
Yep, I realized that too and I'll improve it.