better widget storage, every widget now has unique content id
added content id parameter
exceptions in hooks are logged
persistentWidgets config now gets its content id as string