crush: fix CrushCompiler won't compile maps with empty shadow tree
Steps to reproduce:
(1) ceph osd crush rm-device-class osd.0
(2) ceph osd crush set-device-class foo osd.0
(3) ceph osd crush rule create-replicated foo_rule default host foo
(4) ceph osd crush rm-device-class osd.0
(5) ceph osd getcrushmap -o crushmap
(6) crushtool -d crushmap -o crushmap.txt
(7) crushtool -c crushmap.txt -o crushmap
unknown device class 'foo'
Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
(cherry picked from commit
3e4fe5bc7410cecaff86c7c216a3e63eb94f6213)