Demote SlotAsset to AbstractSlot

Add some hacks to get back real slots as necessary.  So far this has no
effect as all SlotAssets are constructed with real slots, but the next
step is to generalize SlotAsset functions.