warn when adding existing node or labeled edge

The warning is logged for node, not visible to the user.
This will enable merging States with LabeledStates and replacing:

- LabeledStates.label -> States.add -w-> LabeledDiGraph.add_node
- LabeledStates.labels -> States.add_from -w-> LabeledDiGraph.add_nodes_from
- LabeledStates.label_of -> States[state] -w-> LabeledDiGraph.node[state]

and merging Transitions with LabeledTransitions and replacing:

- LabeledTransitions.add_labeled -> Transitions.add -w-> LabeledDiGraph.add_edge
- LabeledTransitions.add_labeled_from -> Transitions.add_from -w-> LabeledDiGraph.add_edges_from
- LabeledTransitions.remove_labeled -> Transitions.remove

where -w-> stands for "wraps", and remove:

- LabeledStates.label, .labels, .label_of
- LabeledTransitions.label, .relabel, .add_labeled, .add_labeled_from
rm not implemented and Transitions.between (to be replaced by Transitions.find)
change LabeledStates.find and LabeledTransitions.find signatures

rm argument: as_dict, only dict returned, tuples not available
rename argument: desired_label -> with_attr_dict
new argument: **attr_dict that updates with_attr_dict, as is done in networkx.add_node

update code wherever the above are used.

So now one can pass key-value pairs, e.g.
	ts.transitions.find(atomic_propositions={'p', 'q'})