raise AttributeError instead of KeyError
enable labeling using States.add

by wrapping LabeledDiGraph.add_node by it.
Similar to how networkx.MultiDiGraph.add_node works, with the difference that here the labeling is constrained.
wrap LabeledDiGraph.add_edge by Transitions.add_edge

mutable states not handled, other, cleaner machinery may developed for that later
rewrite LabeledDiGraph._init_labeling to be robust to undefined labeling
warn if check_states is detected in LabeledDiGraph.add_edge args
replace MultiDiGraph by LabeledDiGraph in tests (now passing again)
more logging in synth
guard against arbitrary finite domains containing non-strings in spec.form

and introduce logging
improve state conversion to integers

If states are of the form 'x0',... where x is any character, then try mapping them to the integer part of the string.
Check that if N states are given, then the integers contained in them are from 0:N-1.
If not, so some integers are missing, fall back to using an arbitrary finite domain for modeling the states.
bugfixes to correctly substitute solver expressions for values of multiple action types
correct test of multiple env actions

- replace integers by strings for sys states
- initialize correctly the domains of env_alice and env_bob actions
- include 'env' in the action names, so that synth can recognize them as such
raise TypeError if ts has non-string states
update env_trans_from_env_ts to handle multiple action types
handle empty env actions, when there are multiple action types
subclass FSM from LabeledDiGraph
rename variable: act -> sys_actions in examples
turn transys logging off in synth test
mv methods .dot_str, .save, .plot from LabeledStateDiGraph to LabeledDiGraph

also auxiliary methods: _add_missing_extension, _export_fname