add method LTL_AST.replace_node

and call it where used
implement replacement of dependent bool variables

includes:

- mapping each atomic proposition to the set of states labeled with it
- converting the set to a disjunction (using the correct sub formulas,
e.g., loc = "s0")
- checking that those APs that appear in vars of GRSpec are indeed
Boolean
- parsing each GRSpec clause and replacing the Boolean Var node with
the subtree resulting from parsing the disjunction above.
bugfix: avoid __repr__ by using Node.val
bugfix: always initialize AST Node attributes
preserve left-to-right child ordering in AST plot
improve docstrings and assertions, rm print
replace check for Unary or Binary by Operator