[Runtime] Add getter and setter support for widget preferences api

According to
http://dev.w3.org/2006/waf/widgets-api/#the-preferences-attribute
the preference items need to support getter and setter.

And if we storage getter and setter items in WidgetStorage
entity, we will produce a dead loop like :
getter=> return this[itemKey] => getter => ...
So we storage getter and setter items in _itemStorage to
avoid this dead loop.
Merge pull request #1972 from CooderIan/preferences_getter_setter

[Runtime] Add getter and setter support for widget