overhaul index and num_rows handling in build_design_matrices

new argument data_index; better handling for

Still needs:
- tests for data_index and data.index
- data_index argument added to highlevel interface
- changes.rst (esp. that "~ 1" can now raise an error if data_index= not given)