Gareth,
There is this one that allows for changing out the whole web map:
ChangeWebMap Widget
And this one for adding layers at runtime that have been pre-configured in the widget:
AddLayer Widget
And this one that allows you to add a layer if you know the url:
Add Service Widget 1.2
There is not one I am aware of that allows you to search for and then add content to an existing map.