Add mapData() function to Widget

Change WidgetLoop's auto data mapping to use this
Add getItems() and getWidgetLoopItems()

Lets you get them so you can operate on the loop.

getWidgetLoopItems() returns a typed widgetloop now, so you can have
full access to that widgets properties and methods