ID Properties weren't being duplicated (by shift-D or any of the other duplication functions). So now ID properties are duplicated in the main copy_libblock function, which (as far as I can check) covers all ID-contained ID properties. I also updated the constraint system to copy pyconstraint ID properties on shift-D. This would probably be a good thing to add to the stable branch, btw.