docstrings and style
variable renaming
shorter function names: solve_feasible_open_loop -> solve_open_loop, solve_feasible_closed_loop -> solve_closed_loop
solve_closed_loop: further variable renaming, add docstring
solve_closed_loop: return when target polytope becomes empty

The previous version returned as soon as s0 became empty, if not using all the horizon.

This change adds the case that all the horizon is used, and both s0 and p2 are empty. Since the union s0 \cup p2 is recursively taken, this is possible if p2 is initialized empty. This is possible only by passing an empty P2 as argument.
extract union_or_chain from solve_closed_loop
last closed-loop iteration in for-loop, not separate
rename variables, fix keyword arg preceding non-kw arg
move number of polytopes check from solve_open_loop to volumes_for_reachability
pythonic iteration over polytopes of Region.list_poly
convert solve_open_loop from recursive to iterative, extract from it poly_to_poly
rename variable, use term N-reachable for shorter docstring line