Fix case where BaseTrackCache wasn't receiving dirty notifications if a
track begins life dirty.

Fixes Bug #1392917.
Only preserve legacy key text as user data if it is non-empty.

This was setting most tracks to dirty unnecessarily.