shells: create RemixView::defaultAttributes method

Replace `defaultThumbnail` with `defaultAttributes` and
`updateThumbnailWithDefault` with `updateAttributesWithDefaults`. For
now, these methods only interact with a shell's thumbnail, but they are
easy to extend with management of other shellData attributes.
shell: genericize _updateAttributesWithDefaults

_updateAttributesWithDefaults now updates all default attributes. A
shell's attribute will be updated to the current default value under the
following circumstances:
1) the attribute is undefined
2) the attribute is the same as the most recent default value
3) the attribute is an empty string and the attribute is not allowed to
   be empty