Add ability to restrict children.

Expanding on the already present can_have_children so that it can also be
a list in addition to booleans. (Empty list == False, Non-empty == True)

The list is list of values similar to those values accepted in a model
ForeignKey. If it is a list it is changed into a list of the content
type ids of the listed models.

i.e. ["self", "app.Model", "Model", Model]
With "self" referring to the model on which can_have_children is defined.
"app.Model" is an app_label-model dot string.
"Model" is a model in the current app.
And the last is a Model class or Model instance.