update transform_lcbcs() for new LCBC syntax

- the syntax: region[, times], dofs, dof_map_fun, kind[, other arguments]
update Conditions.from_conf(), LinearCombinationBC.__init__() for new syntax

- new LinearCombinationBC.canonize_dof_names()
new are_disjoint()
update LinearCombinationBC.canonize_dof_names() for different variables
new LinearCombinationBC.get_var_names()
check that regions are disjoint in Variables.setup_lcbc_operators()
update Variables.setup_lcbc_operators() for new operators (to be done)
remove FieldVariable.create_lcbc_operators()
new kind attribute of LCBC operators
update LCBCOperator for two variables in two regions

- rename & update LCBCOperator -> MRLCBCOperator (model reduction)
- new general LCBCOperator for tying two variables in two regions
reimplement LCBCOperators, use common LCBCOperator constructor signature

- update .__init__(), .add_from_bc(), .append(), .finalize()
- move make_global_lcbc_operator() -> new LCBCOperators.make_global_operator()
new ShiftedPeriodicOperator
update IntegralMeanValueOperator for new base classes
provide some defaults for long syntax in transform_lcbcs()
store field in MRLCBCOperator
update remaining LCBC operators new base classes

- update RigidOperator, NoPenetrationOperator, NormalDirectionOperator
fix MRLCBCOperator active equation map for non-scalar variables
update MRLCBCOperator.treat_pbcs()
update Variables.setup_lcbc_operators(), .__init__(), FieldVariable.__init__()

- new Variables.has_lcbc_rhs
- rename Variables.op_lcbc, .rhs_lcbc -> .mtx_lcbc, .vec_lcbc
- remove FieldVariable.has_lcbc
set vec_lc to None in LCBCOperators.make_global_operator() when no rhs