Split Bom.add() into addPart() and addBom()
Moved the BomPart creation code to Bom.