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.