Explicitly pack empty KeyedContainers and Relations Tables
Due to SelectivePacker natively packing 'elements' of containers it did not transitively pack anything if, and only if, it was given an empty container. This MR explicitly packs empty KeyedContainers and RelationTables as empty packed objects. In addition, it reduces some code duplication between the KeyedContainers and RelationTable cases.
Edited by Gerhard Raven